实体框架插入多对多创建重复数据

时间:2011-02-10 17:57:27

标签: c# entity-framework

我有3张桌子。元数据,规则和NxN关系MetadataRules。

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

myMetadata.Rules = myListOfrules;

当我执行插入时,myListOfRules中的所有规则都在Rules表中重复,而不仅仅是创建关系。 我插入它:

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

如何不重复规则?

谢谢!

1 个答案:

答案 0 :(得分: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);
            }
        }

我在尝试添加之前再次从数据库中选择规则。这是正确的方法吗?