Я работаю над проектом, который обрабатывает пользователей и проекты:
- Пользователь может быть назначен на ноль или X проектов.
- Пользователь имеет права на чтение или запись в проекте.
В моей базе данных есть таблица с именем Users_Projects_Rights, которая используется для привязки пользователя к определенному количеству проектов, а также для определения их прав доступа к ним (это просто логическое значение, true для прав записи, false для прав чтения).
Столбцы таблицы Users_Projects_Rights:
- id_User
- id_Project
- CanWrite (логическое значение)
Мой класс пользователя в настоящее время имеет следующие коллекции:
/// <summary>
/// Gets or sets a user's accessible projects, with the value being
/// the name of the project.
/// </summary>
public virtual IDictionary<int, string> AssignedProjects { get; set; }
Учитывая, что у меня есть таблица Projects, в которой есть столбец Name:
- Как мне сопоставить мой словарь AssignedProjects в моем классе User, чтобы в качестве ключа использовался Id проекта (используя троичное отображение с таблицей Users_Projects_Rights) и имя проекта (взятое из таблицы Projects) в качестве значения
Вот то, что я придумал, но я не знаю, как отобразить значение словаря:
<map name="AssignedProjects" table="Users_Projects_Rights">
<key column="id_User"/>
<map-key column="id_Project" type="Int32"/>
(How do I map the value... ?)
</map>