1

データベース コンテキストを埋めようとしていて、ループの最後にすべての変更を保存しています。

 foreach (var kommune in valgkreds.Value.SubAreas)
                    {

                        var komExist = dbConnection.Omraade.FirstOrDefault(x => x.Id == kommune.Value.Id);

                        if (komExist == null)
                        {
                            Omraade k = new Omraade();
                            k.Id = kommune.Value.Id;
                            k.titel = kommune.Value.Name;
                            k.type_id = 3;
                            dbConnection.Omraade.Add(k);

                            Krydstabel_Omraade ko_kommune = new Krydstabel_Omraade();
                            ko_kommune.parent = valgkreds.Value.Id;
                            ko_kommune.child = kommune.Value.Id;

                            dbConnection.Krydstabel_Omraade.Add(ko_kommune);

                            Console.WriteLine(k.Id);
                            //Console.WriteLine(++i);
                        }
}

次の行を使用して、オブジェクトをコンテキストに既に追加しているかどうかを確認しています。

var komExist = dbConnection.Omraade.FirstOrDefault(x => x.Id == kommune.Value.Id);

nullオブジェクトが追加されていても、常に を返します。まだデータベースに保存されていないためだと思います。SaveChanges()メソッドを実行する前に、それがコンテキスト内にあるかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

1

EF 4.1+ を使用している場合は、データベースにまだ永続化されていないコンテキスト内のオブジェクトを追跡できる "Find" メソッドが含まれています。

http://msdn.microsoft.com/en-US/data/jj573936

これは、主キーを使用して検索している場合にのみ機能するように見えますが。

于 2012-11-21T10:17:06.023 に答える