2011-02-10 102 views
5

我有3个表。元数据,规则和NxN关系MetadataRules。实体框架插入多对多创建重复数据

我在插入元数据,而我的对象包含从数据库中检索的规则列表。

myMetadata.Rules = myListOfrules; 

当我执行插入,在myListOfRules所有规则被复制在规则表,而不是只建立一个关系。 我与将其插入:

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

我应该怎么做才能不重复的规则?

谢谢!

回答

0

我找到了解决办法,但我不认为这是正确的......

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

我再次从DB尝试添加之前选择的规则。那是正确的方法吗?