У меня есть одна сущность, и я хочу создать два отношения Много-ко-многим. Моя организация является:EF Code First - Fluent API - отношение многих ко многим - не создание таблицы
public class User : IdentityUser
{
private ICollection<User> users;
private ICollection<User> followers;
private ICollection<User> followings;
public User()
{
this.Users = new HashSet<User>();
this.Followers = new HashSet<User>();
this.Followings = new HashSet<User>();
}
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual ICollection<User> Users
{
get { return this.users; }
set { this.users = value; }
}
public virtual ICollection<User> Followers
{
get { return this.followers; }
set { this.followers = value; }
}
public virtual ICollection<User> Followings
{
get { return this.followings; }
set { this.followings = value; }
}
}
Мой класс конфигурация выглядит следующим образом:
public class UserMap : EntityTypeConfiguration<User>
{
public UserMap()
{
Property(u => u.FirstName).HasMaxLength(50).IsRequired();
Property(u => u.LastName).HasMaxLength(50).IsRequired();
HasMany<User>(u => u.Users).WithMany(f => f.Followers).Map(m =>
{
m.ToTable("UserFollower");
m.MapLeftKey("UserId");
m.MapRightKey("FollowerId");
});
HasMany<User>(u => u.Users).WithMany(f => f.Followings).Map(m =>
{
m.ToTable("UserFollowing");
m.MapLeftKey("UserId");
m.MapRightKey("FollowingId");
});
}
}
Этот код создает только одну таблицу UserFollowing
вместо двух таблиц UserFollowing
и UserFollower
. Если я поменяю местами таблицы, то получаю только UserFollower
. Кажется, что вторая таблица перезаписывает первую. Я попытался удалить миграцию и базу данных, но я все равно получаю тот же результат.
У кого-нибудь есть идея, почему это происходит?
Для конструктора UserMap необходим параметр, указывающий, создает ли он последователей или подписчиков. В настоящее время карта пользователя создает «Последователи», а затем переписывает объект с помощью «Подписок». – jdweng