2011-02-10 2 views
5

J'ai 3 tables. Métadonnées, règles et une relation NxN MetadataRules. J'insère une métadonnée et mon objet contient une liste de règles extraites de DB.Entity Framework Insert Beaucoup à plusieurs crée des données dupliquées

myMetadata.Rules = myListOfrules; 

Lorsque j'effectue un insert, toutes les règles myListOfRules sont dupliquées dans la table des règles, au lieu de simplement créer une relation. Je l'insérer avec:

public static void InserirTipoMetadata(TA_TIPO_METADATA tipoMetadata) { 
    using (EnterpriseContext context = new EnterpriseContext()) { 
     context.TipoMetadata.AddObject(tipoMetadata); 
     context.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave); 
    } 
} 

Que dois-je faire pour ne pas dupliquer les règles?

Merci!

Répondre

0

J'ai trouvé une solution, mais je ne pense pas que ce soit la bonne ...

public static void InserirTipoMetadata(TA_TIPO_METADATA tipoMetadata) { 
      using (EnterpriseContext context = new EnterpriseContext()) { 
       List<TA_REGRA_VALID> regras = new List<TA_REGRA_VALID>(); 
       foreach (var v in tipoMetadata.TA_REGRA_VALID) { 
        regras.Add(context.Regra.Single(p => p.CO_SEQ_REGRA == v.CO_SEQ_REGRA)); 
       } 
       tipoMetadata.TA_REGRA_VALID = regras; 
       context.TipoMetadata.AddObject(tipoMetadata); 
       context.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave); 
      } 
     } 

je sélectionne les règles à nouveau de la DB avant d'essayer d'ajouter. Est-ce la bonne façon?

Questions connexes