2011-02-10 125 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嘗試添加之前選擇的規則。那是正確的方法嗎?