Как мне создать две таблицы в структуре кода первого объекта, которые имеют внешний ключ опции друг к другу? - PullRequest
0 голосов
/ 09 января 2020

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

public class Person{ 
  [Key]
  public int ID {get; set;}
  public int? FavoriteBookID {get; set;}
  [ForeignKey("FavoriteBookID")]
  public virtual Book FavoriteBook {get; set;}
}

public class Book{
  [Key]
  public int ID {get; set;}
  public int? AuthorID {get; set;}
  [ForeignKey("AuthorID")]
  public virtual Person Author {get; set;}
}

Чтобы еще больше усложнить ситуацию, я хотел бы определить 1-ко-многим свойство навигации, которое будет основано на внешнем ключе в другой таблице. Например, добавление свойства к человеку с именем «BooksIWrote», которое возвращает коллекцию всех сущностей Book с соответствующим идентификатором автора. Что странно, если я добавлю свойство «BooksIWrote» и создам миграцию, я не получу ошибку «главный конец», но она создаст дополнительное поле «Person_ID» в таблице Book, которое не требуется. .

Любая помощь очень ценится.

...