相关疑难解决方法(0)

nhibernate多对多映射 - 映射表中的附加列?

我有以下映射定义:

  <class name="Role" table="Role" optimistic-lock="version" >

    <id name="Id" type="Int32" unsaved-value="0" >
      <generator class="native" />
    </id>

    <property name="RoleName" type="String(40)" not-null="true" />

    <bag name="UsersInRole" generic="true" lazy="true" cascade="all" table="UserRoles" >
      <key  column="RoleId" />
      <many-to-many column="UserId" class="SystemUser, Domain"/>
    </bag>
Run Code Online (Sandbox Code Playgroud)

<id name="Id" type="Int32" unsaved-value="0" >
  <generator class="native" />
</id>
<property name="UserName" type="String(40)" not-null="true" unique="true" />
Run Code Online (Sandbox Code Playgroud)

此映射生成映射表UserRoles,它有两列 - RoleId和UserId.

但是,我想为该关系添加额外的属性 - 即一些枚举值定义关系的状态以及有效的开始和结束日期.

是否可以在nhibernate中执行或者我是否需要在此处添加其他类并将关系m-to-m更改为2个关系[user] 1-to-m [user_role] m-to-1 [role]?

nhibernate nhibernate-mapping

11
推荐指数
1
解决办法
6262
查看次数

NHibernate多对多关系表中的其他字段

当我与nhibernate有很多to.many关系并让nhibernate生成我的db模式时,它会添加一个包含相关实体主键的aditional表.是否可以向此添加其他字段并访问它们而不必手动使用sql麻烦?

.net c# nhibernate

3
推荐指数
1
解决办法
2176
查看次数

在连接表中使用额外列进行多对多映射

这是我希望拥有的域名:

public class Person
{
    public int Id { get; set; }
    public IList<AcquiredCertificate> AcquiredCertificates { get; set; }
}

public class AcquiredCertificate
{
    public Person Acquirer { get; set; }
    public Certificate Certificate { get; set; }
    public DateTime DateAcquired;
}

public class Certificate
{
    public int Id { get; set; }     
}
Run Code Online (Sandbox Code Playgroud)

这是我的架构:

CREATE TABLE People (
    PersonId INT PRIMARY KEY
);

CREATE TABLE Certificates (
    CertificateId INT PRIMARY KEY
);

CREATE TABLE CertificatesAcquiredByPeople (
    PersonId INT,
    CertificatedId …
Run Code Online (Sandbox Code Playgroud)

orm domain-driven-design nhibernate-mapping

2
推荐指数
1
解决办法
3441
查看次数