LINQ-to-SQL更新问题

Eya*_*yad 0 .net c# linq linq-to-sql

我正在尝试更新Tag表中的标签列表,如下所示:

List<Tag> tagList = GetUnitTagList(unitId);

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

        db.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

这是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();
}
Run Code Online (Sandbox Code Playgroud)

但我试图更新的价值没有得到更新.

但是,以下代码可以正常工作:

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();
Run Code Online (Sandbox Code Playgroud)

看起来如果我得到一个Tag对象的集合我们一个方法返回然后我无法更新记录.我尝试调试,没有异常!

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

Ser*_*sev 5

您正在从一个dbContext(创建GetUnitTagList)更新实体并调用SubmitChanges另一个(在某个您未向我们展示的地方创建).

在你的上一个例子中,dbcontext显然是同一个.