Несколько ассоциаций от одного объекта к двум объектам одного типа объекта - PullRequest
10 голосов
/ 13 мая 2011

Я пытаюсь сначала использовать код и свободный API для создания объекта, который содержит две разные сущности из одной и той же таблицы.Другими словами, объект переноса содержит ссылку на два разных объекта резервуара - один является источником, а другой - местом назначения.

Однако, когда я использую следующий код, я получаю исключение, утверждающее, что «ссылочные отношения приведут к циклической ссылке, которая недопустима».

modelBuilder.Entity<Transfer>()
            .HasRequired<Tank>(t => t.Source)
            .WithMany(t => t.OutboundTransfers);
modelBuilder.Entity<Transfer>()
            .HasRequired<Tank>(t => t.Destination)
            .WithMany(t => t.InboundTransfers);

Моя лучшая догадка заключается в том, чтоон думает, что я указываю оба ключа на один и тот же танк?Любая идея, как я могу сделать это?

РЕДАКТИРОВАТЬ: нашел ответ как добавление .WillCascadeOnDelete (false) из Entity Framework Code First - два внешних ключа из одной таблицы

Ответы [ 2 ]

1 голос
/ 19 октября 2012

Как вы заявили, вы сможете добавить .WillCascadeOnDelete(false) - https://stackoverflow.com/a/5559300/5416

modelBuilder.Entity<Transfer>()
        .HasRequired<Tank>(t => t.Source)
        .WithMany(t => t.OutboundTransfers)
        .WillCascadeOnDelete(false);
modelBuilder.Entity<Transfer>()
        .HasRequired<Tank>(t => t.Destination)
        .WithMany(t => t.InboundTransfers)
        .WillCascadeOnDelete(false);

Я только что добавил этот ответ, чтобы он больше не отображался в списке без ответа.как без ответа с нулевыми ответами.Помечено как сообщество вики:)

0 голосов
/ 24 октября 2012

Как обычно, Ладислав (EF Guru) отвечает на вопросы EF. (спасибо, Ладислав) Просто альтернатива, которую я нашел полезным. У меня есть второе решение, которое я запускаю параллельно. Если у меня каждый есть код, первый вопрос. Я сначала попробую это: Обратный инженер для кодирования первого решения (из электроинструментов EF)

У меня есть тестовая БД, куда я вручную добавляю нужную концепцию в БД. Я по-прежнему считаю, что делать это в БД более интуитивно понятно, так как я новичок в коде. Затем с помощью powertool http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d

в Project / Solution щелкните правой кнопкой мыши на Entity Framework, сначала спроектируйте DB для кодирования.

Проверьте код, который он генерирует. Вы получаете пример того, как сделать что-то.

...