0

У меня есть проект MVC с использованием EF6.1, и мне нужно добавить другой внешний ключ к модели. Я довольно новичок в этом поле, и я получаю сообщение об ошибке при добавлении миграции.EntityFramework two Foreign Keys Code First Migration issue

У меня есть 3 таблицы на месте (теги, содержание, страницы). В настоящее время существует FK между контентом & Найденные теги Определены Созданная система Tags_Content table для меня.

pubic class Content { 

int Id { get; set; } 
string Title { get; set; } 
public virtual ICollection<Tag> Tags { get; set; } 

public static new void Configure<TSelf>(EntityTypeConfiguration<TSelf> configuration) 
     where TSelf : Content 
{ 

configuration.HasMany(o => o.Tags) 
      .WithMany(t => (ICollection<TSelf>)t.Content) 
      .Map(c => c.ToTable("Tags_Content")); 

} 

} 

class Page : Content { 
// extends general content 
} 

class Tag { 

int Id { get; set; } 
string Name { get; set; } 

// add a column to Tags which will be the FK to Content or Pages 
// the purpose is to implement an option of assigning additional page (or content) to a tag (the PageId is null or any page) 

public int? PageId { get; set; } 
public virtual Page Page { get; set; } 

public static new void Configure<TSelf>(EntityTypeConfiguration<TSelf> configuration) 
      where TSelf : Tag 
{ 
    configuration.HasMany(a => a.Content) 
       .WithMany(a => (ICollection<TSelf>)a.Tags) 
       .Map(c => c.ToTable("Tags_Content")); 
} 
} 

Я не могу написать правильную конфигурацию, определяющую FK. Может ли кто-нибудь здесь помочь мне? Благодарю.

+0

Вы сталкиваетесь с каким-либо исключением? Какое исключение? Вы ищете способ указать имена столбцов в таблице «Tags_Content»? –

+0

Привет, Джениш, я не вижу никаких исключений. Код выше хорошо. Мне нужно добавить инструкции конфигурации, которые создадут FK, где PageId ссылается на Content/Page и может быть NULL. Я пробовал это несколько раз, но всегда неправильно, что привело к тому, что EF не смогла создать модель при добавлении-миграции. – Tomas

+0

Одна ошибка, которую я обнаружил в вашем коде. Вы определяете отношение «многие ко многим» дважды в классе «Содержание» и другое в «теге». Это неправильно. Вам нужно удалить любое заявление. –

ответ

0

Мне не хватало коллекции в моих определениях. Я наконец понял это. Извините, что беспокоился о новичке.

+0

Какова бы ни была проблема, вы должны указать ее в ответе, чтобы она стала полезной для других людей, блуждающих по решению здесь. –

Смежные вопросы