2011-02-10 14 views
5

Tengo 3 tablas. Metadatos, reglas y una relación NxN MetadataRules.Insertar entidad de marco Muchos a muchos crea datos duplicados

Estoy insertando una Metadata, y mi objeto contiene una lista de Reglas que se recuperan de DB.

myMetadata.Rules = myListOfrules; 

cuando realizo una inserción, todas las reglas en myListOfRules están duplicados en la tabla de reglas, en lugar de sólo la creación de una relación. estoy insertarlo con:

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

¿Qué debo hacer para no duplicar las Reglas?

Gracias!

Respuesta

0

he encontrado una solución, pero no creo que es la correcta ...

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); 
      } 
     } 

estoy seleccionando las reglas de nuevo desde la base de datos antes de intentar agregar. ¿Es esa la forma correcta?

Cuestiones relacionadas