Я разрабатываю миграцию кода с использованием Entity Framework и имею некоторые проблемы, когда один объект имеет список того же типа, что и сам. Скажем, у меня есть User
объекта, который имеет List<User>
как его Friends
:Наличие одного и того же объекта в Entity Framework
public class User
{
[Key]
public int UserId { get; set; }
// some other stuff
public List<User> Friends { get; set; }
}
Проблема заключается в том EF ищет внешний ключ для пользователя и пытается создать, когда он не мог найти:
AddColumn("dbo.Users", "User_UserId", c => c.Int());
Я стараюсь не делать UserId
ключом и внешним ключом одновременно, так что это хорошая практика здесь?
'UserId' не может быть внешним ключом, это отношения один-ко-многим. Вам понадобится отдельная таблица друзей пользователя, а записи, связывающие идентификатор пользователя с идентификаторами друга. – dasblinkenlight
Для друзей и пользователей необходимо иметь отдельные таблицы. В вашем случае инфраструктура Entity пытается определить внешний ключ для построения отношений. И он находит UserId из той же таблицы, которая является уникальным первичным ключом. Вы не можете этого избежать. – Pavvy