我正在努力解决这个问题,但到目前为止还做不到。各种各样的错误。
这些是我的db表。
人员(personID,姓名,年龄)
角色(roleID、roleName)
PersonRoles(personRolesID、personID、roleID)
这是我的域类
public Person
{
public virtual Roles RolesForThisPerson {get;set;}
public virtual string Name {get;set;}
public virtual int Age {get;set;}
}
public Roles
{
public virtual IList<string> RoleList {get;set;}
}我完全不知道如何处理这个问题。我对套装,包包,单子都很迷惑...我甚至不知道从何说起。
有人能帮我推一下吗?
谢谢
发布于 2012-11-27 13:14:39
让我们保持DB模式不变,并首先调整C#域类:
public class Person
{
public virtual string Name {get;set;}
public virtual int Age {get;set;}
public virtual IList<Role> RolesForThisPerson {get;set;}
}
public class Role
{
public virtual string RoleName { get; set; }
}现在,将这两个实体映射到已定义的表中:
<class name="Person" table="Person" lazy="true">
<id name="ID" column="personID">
<generator class="native" />
</id>
<property name="Name" not-null="true" />
<property name="Age" not-null="true" />
<!-- placeholder for roles -->
</class>
<class name="Role" table="Role" lazy="true">
<id name="ID" column="roleID">
<generator class="native" />
</id>
<property name="RoleName" not-null="true" />
</class>现在我们可以使用<idbag>映射并以这种方式扩展Person类映射:
<idbag name="RolesForThisPerson" batch-size="25" table="PersonRoles"
inverse="true" lazy="true" cascade="none" >
<collection-id column="personRolesID" type="System.Int32" >
<generator class="native" />
</collection-id>
<key column="personID" />
<many-to-many class="Role" column="roleID" />
</idbag><idbag>可以受益于这样一个事实,即即使是配对表也有它自己的标识符。Cascade设置为none,期望角色在系统中,并且仅为其分配用户(从中删除)。属性batch-size将影响在获取惰性角色集合时将执行多少SELECT语句。
https://stackoverflow.com/questions/13575745
复制相似问题