2009-08-12 5 views
0

Я использую в качестве PK для своих объектов. Поскольку EF не поддерживает инструкцию newid() SQL, я принудительно вставляю Guid.NewGuid() в свои методы создания.Entity Frmwk pb: поиск добавленных сущностей в текущем контексте

вот моя проблема: У меня есть таблица с кластерным уникальным ограничением (2 строки, а не ПК).

Я бегу код в то же EF контекста, который подойдет как операции и добавляет/ссылки объектов и т.д.

Можно ли выполнить поиск объекта в состоянии «Добавлено» в моем контексте?; то есть в моем контексте, но еще не вставлен в мою БД.

Чтобы избежать повышения единственного ограничения SQL, я должен знать, является ли объект уже «поставлен в очередь» в контексте и повторно использовать его вместо создания нового Guid (... и другого объекта) ! :()

ответ

1

этот пост спас меня :):

http://geekswithblogs.net/abhijeetp/archive/2009/07/23/retrieving-added-entities-from-the-objectstatemanager-to-avoid-duplication.aspx

var stateEntries = context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EtityState.Modified | EntityState.Unchanged); 
    var roleEntityEntries = stateEntries.Select(s => s.Entity).OfType<Role>(); 
    roleEntity = roleEntityEntries.FirstOrDefault(r => r.RoleName.Trim().ToLower() == roleName.Trim().ToLower()); 
    if (roleEntity == null) 
    { 
     return new Role { RoleName = roleName }; 
    }