У меня есть таблица с именем User
, которая наследует свойства от IdentityUser
, внутри этой таблицы я добавил ссылку на таблицу UserFriendship
, в которой нужно хранить все дружеские отношения с пользователем:
public class User : IdentityUser
{
public string FirstName { get; set; }
public DateTime BirthDate { get; set; }
public virtual ICollection<UserFriendship> UserFriendship { get; set; }
}
По существу, UserFriendship
содержит двух пользователей, которые имеют общую дружбу, вот определение модели:
public class UserFriendship
{
public int Id { get; set; }
[Key, ForeignKey("UserA")]
public string UserAId { get; set; }
public User UserA { get; set; }
[Key, ForeignKey("UserB")]
public string UserBId { get; set; }
public User UserB { get; set; }
[Required]
public DateTime DateTime { get; set; }
}
Я определил UserA
и UserB
, которые являются двумя FK
User
, которые содержатся внутри AspNetUsers
таблицы.
Теперь внутри FluentAPI
я объявил следующее:
builder.Entity<UserFriendship>(entity =>
{
entity.HasKey(f => f.Id);
entity.HasOne(u => u.UserA)
.WithMany(n => n.UserFriendships)
.HasForeignKey(u => u.UserAId)
.IsRequired();
entity.HasOne(u => u.UserB)
.WithMany(n => n.UserFriendships)
.HasForeignKey(u => u.UserBId)
.IsRequired();
});
при выполнении этой команды:
add-migration InitialMigration -context MyAppContext
Я получу:
Невозможно создать связь между 'User.UserFriendships' и 'UserFriendship.UserB', потому что уже существует связь между 'User.UserFriendships' и'UserFriendship.UserA.Свойства навигации могут участвовать только в одном отношении.
Я не эксперт по EnityFramework
, но, исходя из этой ошибки, я думаю, что не могу определить два FK
в одной таблице?
Извините за любую ошибку, спасибо.