2013-05-12 53 views
0

我正在用c#和ADO .NET实体数据模型开发一个应用程序。我有一个表文章(idArticle,nameArticle,statusArticles)。我想检索statusArticle = false的第一篇文章,并将其值更新为true。有人能帮助我这个代码,请:数据库中的更新行

private void button_Click(object sender, EventArgs e) 
     { 
      using (DbEntities db = new DbEntities()) 
      { 
       Articles firstArticle = db.Articles.FirstOrDefault(u => u.statusArticle == false); 
       if (firstArticle != null) 
       { 
        firstArticle.statusArticle = true; 
        MessageBox.Show("Article validated", "OK"); 
        this.Refresh(); 
       } 
      } 
     } 
+0

你得到任何异常这里.. – Saravanan 2013-05-12 13:34:58

+0

没有错误,但没有更新值来完成。 – 2013-05-12 13:36:03

回答

1

这可以如下

private void button_Click(object sender, EventArgs e) 
    { 
     using (DbEntities db = new DbEntities()) 
     { 
      Articles firstArticle = db.Articles.FirstOrDefault(u => u.statusArticle == false); 
      // firstArticle is not null anyways as you are calling FirstOrDefault() 
     **EDIT** // In case nothing has status = false, you will get a new Articles object, so instead of the below null check, you have to check for other property like id or name that will be unique. 
      if (firstArticle != null) 
      { 
       firstArticle.statusArticle = true; 
       db.SaveChanges(); 
       MessageBox.Show("Article validated", "OK"); 
       this.Refresh(); 
      } 
     } 
    } 
+0

打败你:D – HennyH 2013-05-12 13:38:13

+0

如果没有条件,那么statusArticle = false呢? – 2013-05-12 13:43:01

+0

@NaourassDerouichi:我已经使用评论更新了帖子,而不是检查空值,您应该检查其他任何独特的属性或1)您应该根据输入ID更新文章。这将是一个正确的方法。 – Saravanan 2013-05-12 13:48:47

1

.FirstOrDefault()

public static TSource FirstOrDefault<TSource>(
    this IEnumerable<TSource> source //db.Articles 
) 

将返回:

默认(TSource)如果来源是空的;否则,源中的第一个元素。

默认(TSource)返回null参考型元件或(通常)0值类型的元件。

你修改代码:

private void button_Click(object sender, EventArgs e) 
     { 
      using (DbEntities db = new DbEntities()) 
      { 
       Articles firstArticle = db.Articles.FirstOrDefault(u => u.statusArticle == false); 
       if (firstArticle != null) 
       { 
        firstArticle.statusArticle = true; 
        MessageBox.Show("Article validated", "OK"); 
        db.SaveChanges(); //change (can go before/after validation message) 
        this.Refresh(); 

       } 
      } 
     } 
+0

谢谢!我忘了这个指示! – 2013-05-12 13:44:14