c# - Nhibernate多对多桥接表保持为空

标签 c# nhibernate nhibernate-mapping

我有两个与桥接表具有多对多关系的表。

用户类映射:

<class name="MatrixCore.User" table="MatrixUser" lazy="false">
    <id name="ID" column="ID" unsaved-value="0">
      <generator class="native"/>
    </id>
    <property name="FirstName"/>
    <property name="LastName"/>
    <property name="UserName"/>
    <property name="Password"/>
    <many-to-one name="UserType" class="MatrixCore.UserType" />
    <set name="Projects" table="UserInProject" cascade="All">
      <key column="MatrixUser_ID"/>
      <many-to-many class="Project" column="Project_ID"/>
    </set>
  </class>

项目类映射:

<class name="MatrixCore.Project" table="Project" lazy="false">
   <id name="ID" column="ID" unsaved-value="0">
     <generator class="native"/>
   </id>
   <property name="Name" />
   <property name="Acronym"/>
   <property name="StartDate"/>
   <property name="EndDate"/>
   <set name="Users" table="UserInProject" cascade="All">
     <key column="Project_ID"/>
     <many-to-many class="User" column="MatrixUser_ID" />
   </set>
</class>

类的实现太简单,每个类都有一个集合 另一个。 我正在尝试在桥接表保持为空的表中插入记录。

    ICollection<Project> ps = new HashSet<Project>() { project};

            UserType tp = (UserType)session.Get("UserType", 1);
            User u = new User()
            {
                FirstName = "Hussein",
                LastName = "Hussein",
                UserName = "Hussein",
                Password = "welcome",
                UserType = tp,
                Projects = ps
            };

            session.Save(u);

最佳答案

尝试这个映射 对于用户类别

<set name="Projects" table="UserInProject" inverse="true" cascade="save-update" lazy="false">
  <key column="MatrixUser_ID" />
  <many-to-many class="Project" column="Project_ID"/>
</set>

以及项目类

<set name="Users" table="UserInProject" cascade="save-update" lazy="false">
  <key column="Project_ID"  />
  <many-to-many class="User" column="MatrixUser_ID"/>
</set>

关于c# - Nhibernate多对多桥接表保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10402438/

相关文章:

c# - Like 不会转义特殊字符 NHibernate

asp.net - 在 asp.net 中使用 c# 预编译的网站中缺少 .cs 文件

c# - ASP.NET 5 Web Api 基于 token 的身份验证

mysql - 系统.IndexOutOfRangeException : Could not find specified column in results using n-hibernate

c# - 自动映射类型为接口(interface)的属性

nhibernate - 在Nhibernate中刷新实体的最佳方法是什么

nhibernate - 非法访问加载集合错误

c# - 将 json 响应转换为列表

复合键的 JPA 映射问题

NHibernate:拦截器和监听器的区别