2009-06-02 13 views
5

エンティティが既にデータベースに追加されているかどうか確認したいと思います。では、abの違いをどのように確認できますか?C#:Linq2SQLエンティティがデータベースにあるかどうかを確認する方法

var a = dataContext.Things.First(x => x.Name == something); 
var b = new Thing { Name = something }; 

私はこれがあれば、それをより明確にするには:thingニーズを挿入する場合、私は見ることができますどのように

var thing = dataContext.Things.FirstOrDefault(x => x.Name == something) 
      ?? new Thing { Name = something }; 

を?

+0

私はあなたに役立つかもしれない関連する質問を見つけました:http://stackoverflow.com/questions/100068/linq-to-sql-insert-if-non-existent –

+0

クールで、それも同様にチェックします! – Svish

答えて

4

Firstの代わりにFirstOrDefaultを使用すると、一致するものがない場合はnullが返されます。 、データベースによって自動的に移入されThingにおけるIDフィールドがあるかどう、

var a = dataContext.Things.FirstOrDefault(x => x.Name == something); 
bool needsInsertion = (a == null); 
a = a ?? new Thing { Name = something }; 

代わりにあなたを:ちょうどで開始することがヌルだったかどうか覚えている - あなたが挿入する必要があるかどうかを知るためのよう

それを使ってデータベースに既に存在するかどうかを検出することができます。

+0

+1これは答えです – andy

+0

はい、私は知っています。たぶん私の質問は十分ではなかった...私は私の質問で詳しく述べる。 – Svish

+0

挿入されていない場合、idは常に0ですか?それとも別のことですか? – Svish

関連する問題