избежать дублирования вставок в ожидании Linq? - PullRequest
0 голосов
/ 23 марта 2012

Я могу предотвратить добавление одного и того же объекта дважды, но мне все равно нужно сослаться на ожидающий идентификатор для добавления других связанных объектов.

В дальнейшем некоторые отдельные элементы в SomeData могут захотеть добавить один и тот же объект.человек дважды.Я могу это отследить, но мне все еще нужно добавить информацию об отдельном элементе ожидающему человеку.как мне справиться с этим?

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

1 Ответ

0 голосов
/ 23 марта 2012

По сути, вам нужно проверить, подключен ли объект к контексту.Вот пример того, как вы можете сделать эту работу:

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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...