2012-03-23 16 views
0

同じオブジェクトが2回追加されるのを防ぐことができますが、他の関連オブジェクトを追加するにはまだ保留中のIDを参照する必要があります。Linqの保留中の挿入物の重複を避ける?

SomeDataのいくつかの不本意な項目は、同じ人物を2度追加したい場合があります。私はそれを追跡することができますが、私はまだ保留中の人に別の項目の情報を追加する必要があります。どのように私はこれを管理するのですか?

foreach(item i in SomeData) 
     { 
     var x = dc.People.Where(p.someprop==a...); 
     if (x=null) 
     { 
      Person p = new P(..); 
      dc.People.InsertOnSubmit(p); 
     } 
     ... 
     ... 
     } 

     dc.Submitchanges() 
+0

これを明確にすると、この名字の姓名が分かりますが、その場合は詳細を確認できます。 –

答えて

0

基本的に、エンティティが既にコンテキストにアタッチされているかどうかを確認する必要があります。

public static void SafeAttachTo<T>(this ObjectContext context, string entitySetName, ref T entity) where T : class { 
      ObjectStateEntry entry; 
      bool isDetached; 

      if (context.ObjectStateManager.TryGetObjectStateEntry(context.CreateEntityKey(entitySetName, entity), out entry)) { 
       isDetached = entry.State == EntityState.Detached; 
       entity = (T) entry.Entity; 
      } 
      else 
       isDetached = true; 

      if (isDetached) 
       context.AttachTo(entitySetName, entity); 
     } 
関連する問題