2012-08-05 84 views
0

我想在像下面这样的标签表更新的标签列表:LINQ到SQL更新问题

List<Tag> tagList = GetUnitTagList(unitId); 

     foreach (Tag tag in tagList) 
     { 
      tag.count = tag.count - 1; 
     } 

     db.SubmitChanges(); 

这里是GetUnitTagList()方法:

public static List<Tag> GetUnitTagList(int unitId) 
{ 
    DataClassesDataContext db = new DataClassesDataContext(); 

    var tags = from x in db.UnitTags where x.UnitID == unitId select x.Tag; 

    return tags.ToList(); 
} 

但我试图更新的值不会更新。

但是,下面的代码工作得很好:

var tags = from x in db.UnitTags where x.UnitID == unitId select x.Tag; 

     foreach (Tag tag in tags) 
     { 
      tag.count = tag.count - 1; 
     } 

     db.SubmitChanges(); 

它看起来像如果我得到标签的对象集合了我们一个方法的返回,然后我无法更新记录。我试图调试,没有任何异常!

那么,为什么更新记录的第一种方式不起作用,而第二种方式只是起作用而没有问题?

回答

5

您正在从一个dbContext(在GetUnitTagList中创建)更新实体,并在另一个上调用SubmitChanges(创建某处不显示我们)。

在你的最后一个例子中,dbcontext显然是一样的。

+0

因此,每次我想更新时,我必须选择然后更新相同的方法,只是为了保持与dbContext范围的一致性? – Eyad 2012-08-05 11:21:58

+0

不,你不知道。但是你必须找到一种方法来在单个dbContext上执行这些操作。 – 2012-08-05 12:45:28