0

次のように、タグテーブルのタグのリストを更新しようとしています。

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();

メソッドが返すTagオブジェクトのコレクションを取得した場合、レコードを更新できないようです。デバッグを試みましたが、例外はありませんでした。

では、レコードを更新する最初の方法が機能しないのに、2番目の方法は問題なく機能するのはなぜですか?

4

1 に答える 1

5

あるdbContext(で作成された)からエンティティを更新し、別のdbContext(私たちに表示されていない場所で作成されたGetUnitTagList)を呼び出しています。SubmitChanges

最後の例では、dbcontextは明らかに同じです。

于 2012-08-05T11:05:19.747 に答える