Entity Framework портит мое отношение «многие ко многим» - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть таблица продуктов и таблица BundleLink, которая определяет, какой продукт является другим продуктом.

    public class Product
    {
        public int Id { get; set; }

        public ICollection<BundleLink> MasterOf { get; set; }

        public ICollection<BundleLink> BundleOf { get; set; }
    }

    public class BundleLink
    {
        public int Id { get; set; }

        public Product Master { get; set; }

        public Product Bundle { get; set; }

        public int Quantity { get; set; }
    }

Поэтому, когда я иду к основному продукту, я вижу, какие пакеты относятся к нему и в другом направлении.

Но структура сущностей создает 4 столбца на сервере SQL в таблице BundleLink.Он создает один для полей продукта, которые я определил, и еще два внешних ключа, где каждый из них равен нулю каждый раз, это зависит от того, в каком направлении я добавляю пакет.Как я могу определить для EF, какая коллекция BundeLink принадлежит какому продукту?

Надеюсь, мое описание понятно.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Как определить для EF, какая коллекция BundeLink принадлежит какому продукту?

У вас есть два решения:

  • в OnModelCreating методе вашего DbConext используйте свободную конфигурацию, поэтому, определив отношение, это поможет EF узнать, какие коллекции принадлежат к какому.
  • украсьте вашу коллекцию атрибутом InverseProperty. Так что в ваших коллекциях у вас будет InversProperty("Master") для MasterOf коллекции и InversProperty("Bundle") для BundleOf.
0 голосов
/ 25 апреля 2018

В Entity Framework необходимо соблюдать аннотации данных - атрибут ForeignKey в EF 6 и EF Core.

Атрибут ForeignKey используется для настройки внешнего ключа в отношениях между двумя объектами в EF 6 и EF Core.,Он отменяет соглашения по умолчанию.В соответствии с соглашением по умолчанию EF создает свойство как свойство внешнего ключа, когда его имя совпадает со свойством первичного ключа связанной сущности.

Дополнительная информация: http://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspx

Спасибо, raghu

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