DbContext - связь многих со многими между тремя таблицами - PullRequest
2 голосов
/ 17 мая 2011

Ну, я пытался установить отношения «многие ко многим» между тремя таблицами. Форум, Роль, AccessMask. В SQL это будет выглядеть так:

ForumID | RoleID | AccessMaskID
--------------------------------
1       | 1      | 2
2       | 2      | 1

И так далее. У тебя есть идея. ForumID и RoleID - это первичный ключ для таблицы. Вопрос .. как это сделать в DbContext? Он кричит, что у сущности отсутствует ключ. (действительно ?). Я нашел способ установить взаимосвязь «многие ко многим» между двумя таблицами с помощью modelBuilder, но, как вы видите, мне все еще не хватает еще одной таблицы

1 Ответ

3 голосов
/ 17 мая 2011

Это не будет отношение многих ко многим.Вы должны представить эту таблицу как отдельную сущность и отобразить три взаимосвязи «один ко многим».Отношение «многие ко многим» работает только между двумя таблицами, если таблица соединений содержит только ключи этих таблиц.

public class Forum
{
    public int Id { get; set; }
    ...
    public virtual ICollection<ForumRole> ForumRoles { get; set; } 
}

public class Role
{
    public int Id { get; set; }
    ...
    public virtual ICollection<ForumRole> ForumRoles { get; set; } 
}

public class AccessMask
{
    public int Id { get; set; }
    ...
    public virtual ICollection<ForumRole> ForumRoles { get; set; } 
}

public class ForumRole
{
    [Key, Column(Order = 0)]
    public int ForumId { get; set; }
    [Key, Column(Order = 1)]
    public int RoleId { get; set; }
    public int AccessMaskId { get; set; }

    public virtual Forum Forum { get; set; }
    public virtual Role Role { get; set; }
    public virtual AccessMask AccssMask { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...