Entity Framework Insert Многие ко многим создают дублированные данные - PullRequest
5 голосов
/ 10 февраля 2011

У меня есть 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);
    }
}

Что я должен сделать, чтобы не дублировать Правила?

Спасибо!

1 Ответ

0 голосов
/ 10 февраля 2011

Я нашел решение, но не думаю, что оно правильное ...

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

Я снова выбираю правила из БД, прежде чем пытаться добавить. Это правильный путь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...