Я использую структуру сущностей и моделирую отношение многие ко многим.
Я создал отношения между двумя объектами, используя свободный 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» и таблицей «GroupMembers» был
уже определено. Каждый EntitySet должен ссылаться на уникальную схему и
таблица.
Я полагаю, это связано с тем, что структура сущностей не осознает, что таблица GroupMembers, указанная в свободном API, и таблица сущностей GroupMembers фактически совпадают. Другими словами, если я удаляю свободный API-код, описывающий отношение «многие ко многим», я успешно могу инициализировать DbContext.
Могу ли я иметь таблицу «многие ко многим», на которую я также могу ссылаться напрямую?