2009-08-12 24 views
0

J'utilise guids comme PK pour mes entités. Comme EF ne supporte pas l'instruction SQL newid(), je force Guid.NewGuid() dans mes méthodes de création.Entité Frmwk pb: recherche d'entités 'ajoutées' dans le contexte actuel

Voici mon problème: J'ai une table avec une contrainte unique en cluster (2 chaînes, pas PK).

Je suis en cours d'exécution du code dans le même contexte EF qui ajoute et opérations effectue ensuite/liens entités, etc.

Est-il possible de rechercher une entité dans l'état « Ajouté » dans mon contexte?; c'est-à-dire qui est dans mon contexte, mais pas encore inséré dans ma base de données.

Pour éviter l'augmentation de la contrainte SQL unique, je dois savoir si l'entité est déjà "mise en file d'attente" dans le contexte, et la réutiliser au lieu de créer un nouveau Guid (... et une entité différente ! :()

Répondre

1

ce poste m'a sauvé :):

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 }; 
    } 
Questions connexes