клас, който представлява елемент с атрибути, където атрибутите са в колекция от атрибутни обекти, като се използват първите миграции на код

Опитвам се да направя проект за рамка на първи субект с код, който се състои от два класа/таблици. Един клас представлява джаджа. Вторият клас/таблица съдържа атрибути на тази джаджа. т.е. с дясна резба, с лява резба, малка, голяма и т.н.

Всяка джаджа може да има 1 или повече атрибути и всеки атрибут може да принадлежи на много джаджи.

Първо рисувам празно как това трябва да бъде представено в кода.

    class Widget{
      public int Id {get;set;}
      public string Name {get;set;}
      public ICollection<Attribute> Attributes{get; set;}
    }

    class Attribute{
      public int Id{ get; set;}
      public string Name{get; set;}
    }

Горните класове ми дават две таблици и множество копия на един и същ атрибут в DB.

В крайна сметка се опитвам да използвам таблицата с атрибути като разширяемо изброяване от сортове.


person John S    schedule 28.04.2014    source източник
comment
Мисля, че трябва да добавя междинна таблица. т.е. WidgetAttributes   -  person John S    schedule 28.04.2014


Отговори (2)


Тъй като нямате свойство за навигация на обекта Attribute, Entity Framework няма да определи по конвенция дали е налице връзка много към много. Вместо това ще създаде един към много. За да укажете връзка много към много, трябва да добавите код за съпоставяне към контекста.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Widget>()
        .HasMany(w => w.Attributes)
        .WithMany();
}

Кодът .Map() в примера, който сте свързали, е необходим само ако искате да посочите имена на колони или таблици. Ако пропуснете този код, Entity Framework ще предостави имена.

person JC Ford    schedule 28.04.2014

В крайна сметка намерих свързана статия, която го обясняваше добре. Загрижен съм за възрастта на статията и дали нещо се е променило от 2011 г. насам. Статия от много към много

person John S    schedule 28.04.2014