C# NHibernate-多表映射?
我正在从事一个处理用户和项目的项目: 用户可以被分配到零个或X个项目。 用户对项目具有读取或写入权限。 在我的数据库中,我有一个名为Users\u Projects\u Rights的表,用于将用户与一定数量的项目相关联,并指定他们对这些项目的访问权限。这只是一个布尔值,true表示写权限,false表示读权限 “用户”\u“项目”\u“权限”表列包括: id\u用户 id_项目 可写布尔值 我的用户类当前有以下集合:C# NHibernate-多表映射?,c#,nhibernate,nhibernate-mapping,C#,Nhibernate,Nhibernate Mapping,我正在从事一个处理用户和项目的项目: 用户可以被分配到零个或X个项目。 用户对项目具有读取或写入权限。 在我的数据库中,我有一个名为Users\u Projects\u Rights的表,用于将用户与一定数量的项目相关联,并指定他们对这些项目的访问权限。这只是一个布尔值,true表示写权限,false表示读权限 “用户”\u“项目”\u“权限”表列包括: id\u用户 id_项目 可写布尔值 我的用户类当前有以下集合: /// <summary> /// Gets o
/// <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 dictionnary,以便使用Users\u Projects\u Rights表和Projects表中的项目名称作为值的三元映射将项目Id作为键?
以下是我的想法,但我不知道如何映射字典的价值:
<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>
你的设计是错误的。因为一个用户可以有很多这样的项目 公共虚拟IDictionary AssignedProjects{get;set;} 如果映射,将抛出已添加的键异常。因此“设计为用户”具有分配给他的项目列表
公共虚拟列表分配项目{get;set;}我知道了,如果有人有更有效的答案,请告诉我:
<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>
为什么它会抛出那个异常。。?您的意思是,如果一个用户被分配两次到同一个项目..?否..当前用户可以分配到多个项目。Bcoz当前用户id是我们映射中的一个键否,该键是项目id,值是项目名称。