我正在开发一个处理用户和项目的项目:
在我的数据库中,我有一个名为Users_Projects_Rights的表,用于将用户与一定数量的项目相关联,并指定它们对它们的访问权限(它只是一个布尔值,写入权限为true,false阅读权)。
Users_Projects_Rights表格列为:
我的用户类目前有这个集合:
/// <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列:
这是我想出的,但我不知道如何映射字典的值:
<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>
答案 0 :(得分:0)
您的设计错误。因为用户可以有很多项目
public virtual IDictionary AssignedProjects {get;组; }
如果已映射,则将抛出键已添加的异常。因此,设计用户具有分配给他的项目列表
public virtual List AssignedProjects {get;组; }
答案 1 :(得分:0)
我明白了,如果有人有更高效的答案,请告诉我:
<map name="AssignedProjects" table="Users_Projects_Rights">
<key column="id_User"/>
<index column="id_Project" type="System.Int32"/>
<element formula="(SELECT Projects.name FROM Projects WHERE Projects.id = id_Project)"/>
</map>