Nhibernate中的inverse属性负责维护关系表。

数据关系图

单方维护关系表

/// <summary>

/// 1)创建User

/// 2)建立Group并将User添加到Group.Users中

/// 3)创建Group

/// </summary>

private static void CreateGroupAndUser()

{

string username = "User_" + Guid.NewGuid().ToString().Substring(0, 8);

string groupname = "Group_" + Guid.NewGuid().ToString().Substring(0, 8);

UserDAL userDAL = new UserDAL(SessionManager_NHibernateSample.GetSession());

UserModel user = new UserModel();

user.UserName = username;

int userId = userDAL.CreateUser(user);

GroupModel group = new GroupModel();

group.GroupName = groupname;

group.Users = new Iesi.Collections.Generic.HashedSet<UserModel>();

group.Users.Add(user);

GroupDAL groupDAL = new GroupDAL(SessionManager_NHibernateSample.GetSession());

int groupId = groupDAL.CreateGroup(group);

}

上述代码中,如果想让group.Users.Add(user);执行时自动往关系表UserGroup中插入关系数据,则:

GroupMode.hbm.xml中的inverse属性应该设置为false

UserMode.hbm.xml中的inverse属性应该设置为true

如下图所示:

         inverse 属性为 false 表示我来维护关系表。

inverse 属性为 true  表示对方维护关系表。

/// <summary>

/// 1)创建Group

/// 2)建立User并将Group添加到User.Groups中

/// 3)创建User

/// </summary>

private static void CreateUserAndGroup()

{

string username = "User_" + Guid.NewGuid().ToString().Substring(0, 8);

string groupname = "Group_" + Guid.NewGuid().ToString().Substring(0, 8);

GroupModel group = new GroupModel();

group.GroupName = groupname;

GroupDAL groupDAL = new GroupDAL(SessionManager_NHibernateSample.GetSession());

int groupId = groupDAL.CreateGroup(group);

UserModel user = new UserModel();

user.UserName = username;

user.Groups = new Iesi.Collections.Generic.HashedSet<GroupModel>();

user.Groups.Add(group);

UserDAL userDAl = new UserDAL(SessionManager_NHibernateSample.GetSession());

int userId = userDAl.CreateUser(user);

}

按照第一个代码的说法,如果想让user.Groups.Add(group);执行时自动往关系表UserGroup中插入关系数据,则:

UserMode.hbm.xml中的inverse属性应该设置为false

GroupMode.hbm.xml中的inverse属性应该设置为true

双方都维护关系表

将双方的inverse属性都设置为false

最后

inverse属性的默认值为false

/Files/xyjblog/NHibernate/关于NHibernate中关系表的操作.doc

转载于:https://www.cnblogs.com/xyjblog/archive/2010/05/29/1747152.html

关于NHibernate中关系表的操作相关推荐

  1. 7、mysql中的表结构操作

    之前已经介绍了字段以及修饰字段的一些属性,根据特定的对象可以将字段进行组合,这就有了表的概念,接下来介绍一下如何操 作数据表结构.对数据表结构的操作有添加表.修改表.删除表.查看表结构. 添加表 格式 ...

  2. 在mysql中删除表正确的是什么_在MySQL中删除表的操作教程

    丢弃现有MySQL的表是很容易的.但是需要非常小心,删除任何现有的一个表后将无法恢复,因为数据丢失. 语法: 下面是通用的SQL语法丢弃(删除)MySQL表: DROP TABLE table_nam ...

  3. mysql中工资表,MySQL操作工资表,获取累计工资和月平均工资

    根据一个实际的需求案例,描述一下:如何在工资条中添加获取累计工资[字段]和月平均工资[字段] 这个需求存在一个前后端分离的微服务EHR项目中,通过两个SQL语句来实现.业务逻辑:前端调用一个接口,返回 ...

  4. HBase项目之谷粒微博:创建命名空间,微博内容表,用户关系表,微博收件箱表,发布微博内容,添加关注用户,移除(取关)用户,获取关注的人的微博内容,HBase实战项目

    Hbase实战之谷粒微博 1 需求分析 1) 微博内容的浏览,数据库表设计 2) 用户社交体现:关注用户,取关用户 3) 拉取关注的人的微博内容 2 代码实现 2.1 代码设计总览: 1) 创建命名空 ...

  5. Tableau 中的表计算图解(表和区的向下横穿)

    表依据计算可以分为三类: 基于"表"的计算 基于"区"的计算 基于"单元格"的计算 一.基于"表"计算 是指,对视图中整 ...

  6. mysql中关系怎么弄_mysql数据库关系操作

    ### mysql数据库 #### 知识要点: 1. 数据操作增.删.改 2. 外键约束要求 3. 一对多表关系 4. 一对一表关系 5. 多对多表关系 6. 外键约束的参照操作 ### 数据操作 # ...

  7. flask_sqlalchemy 多对多 关系 对中间表的操作

    文章目录 注意 多对多关系表 创建(同时添加中间表page_tag) 不可以只查询一张表来删除(这种做法只能删除一部分.) 应该查询2张表后删除(只删除 中间表page_tag 中的数据) 添加(只添 ...

  8. 从java中的hibernate看Ado.net 与NHibernate的关系

    看了许多人的文章,将Ado.net 与NHibernate看作类似的东西,频繁将两者进行比较.对于那些朋友的观点,我不认同!      我认为ado.net 和 nhibernate是完全不同层次的东 ...

  9. Django模型基础(三)——关系表的数据操作

    模型之间可以有三种表关系,即一对一,一对多和多对多.表关联之间的数据操作在Django中可以很方便的操作到.在模型中,表关联的字段类型是关联表的实例,而不是字段本身类型.关联字段在数据库中会在其后补上 ...

最新文章

  1. 深度学习:垃圾自动分类
  2. HDOJ 3966 Aragorn#39;s Story
  3. 贝壳找房挖到AI大牛叶杰平,房产中介转型需要技术,高估值更需要
  4. Mybatis-Plus主要功能详解
  5. WebUploader 设置单个文件上传
  6. 数据泵导入远程oracle,数据泵导入导出远程数据库数据
  7. 计算机教育类会议论文,中国教育和科研网(CERNET)第七届学术会议征集论文通知...
  8. 像人类一样理解言外之意,阿里AI最新研究成果被国际顶会收录
  9. mysql怎么查找删除重复数据_Mysql中如何查找并删除重复数据
  10. WEBPACK+ES6+REACT入门(2/7)-在项目中使用react以及JSX语法介绍
  11. python语言程序设计实践教程陈东_《Python语言程序设计实践教程》陈东著【摘要 书评 在线阅读】-苏宁易购图书...
  12. Word:表格中绘制斜线表头
  13. 求最小公倍数的两种算法(最大公约数的三种算法)
  14. 原生JS实现记忆翻牌小游戏
  15. 等级保护工作十大误区--转
  16. React中文文档 7. 条件渲染
  17. 酷派7296刷机包 高仿IOS美化 细节精仿
  18. 研究生导师的“难言之隐”
  19. Mysql报文理解mtu拆包依据(tso/gro)
  20. python 游戏开发_Python游戏开发入门

热门文章

  1. java keygenerator_spring-cache -KeyGenerator自定义
  2. hbuilder打包的app如何设置自动清理缓存_手机空间不足,这些“隐形”文件如何找到删除?...
  3. 华为数据通信部门怎么样_华为最高级别认证适合小白吗
  4. 商品规格可选怎么设计_两分钟前|开平木质地栈板怎么安装
  5. content-type的作用
  6. 006_JDK的Number派生类对Comparable接口的实现
  7. 032_jdbc-mysql批量操作
  8. 070_获取日期方法
  9. python xlrd xlwt综合_xlrd和xlwt -- python
  10. axios拦截器_78.1K 的 Axios 项目有哪些值得借鉴的地方