Я использую структуру сущности и моделирующую отношение "многие ко многим".
Я создал связь между двумя объектами, используя свободный API (скажем, пользователи и группы):
this.HasMany(t => t.Users)
.WithMany(t => t.Groups)
.Map(
m =>
{
m.ToTable("GroupMembers");
m.MapLeftKey("Group_Id");
m.MapRightKey("User_Id");
});
Это отлично работает, но я также хочу иметь возможность напрямую ссылаться на таблицу GroupMembers. Для этого у меня есть что-то вроде:
[Table("GroupMembers")]
public class GroupMember
{
#region Properties
/// <summary>
/// Gets or sets the group.
/// </summary>
public virtual Group Group { get; set; }
/// <summary>
/// Gets or sets the Id of rht group.
/// </summary>
[Key]
[Column("Group_Id", Order = 1)]
public int GroupId { get; set; }
/// <summary>
/// Gets or sets the user.
/// </summary>
public virtual User User { get; set; }
/// <summary>
/// Gets or sets the Id of the user.
/// </summary>
[Key]
[Column("User_Id", Order = 2)]
public int UserId { get; set; }
#endregion
}
Однако при инициализации DbContext я получаю следующую ошибку:
Указанная схема недействительна. Ошибки: (381,6): ошибка 0019: EntitySet 'GroupUser' со схемой 'dbo' и table 'GroupMembers' был уже определен. Каждый EntitySet должен ссылаться на уникальную схему и таблица.
Я считаю, что это связано с тем, что инфраструктура сущности не понимает, что таблица GroupMembers, указанная в беглой API и таблице сущностей GroupMembers, фактически одна и та же. Другими словами, если я удалю свободный API-код, описывающий отношения "многие-ко-многим", я успешно смогу инициализировать DbContext.
Могу ли я иметь таблицу "многие ко многим", к которой я также могу обратиться напрямую?