关于NHibernate中关系表的操作
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中关系表的操作相关推荐
- 7、mysql中的表结构操作
之前已经介绍了字段以及修饰字段的一些属性,根据特定的对象可以将字段进行组合,这就有了表的概念,接下来介绍一下如何操 作数据表结构.对数据表结构的操作有添加表.修改表.删除表.查看表结构. 添加表 格式 ...
- 在mysql中删除表正确的是什么_在MySQL中删除表的操作教程
丢弃现有MySQL的表是很容易的.但是需要非常小心,删除任何现有的一个表后将无法恢复,因为数据丢失. 语法: 下面是通用的SQL语法丢弃(删除)MySQL表: DROP TABLE table_nam ...
- mysql中工资表,MySQL操作工资表,获取累计工资和月平均工资
根据一个实际的需求案例,描述一下:如何在工资条中添加获取累计工资[字段]和月平均工资[字段] 这个需求存在一个前后端分离的微服务EHR项目中,通过两个SQL语句来实现.业务逻辑:前端调用一个接口,返回 ...
- HBase项目之谷粒微博:创建命名空间,微博内容表,用户关系表,微博收件箱表,发布微博内容,添加关注用户,移除(取关)用户,获取关注的人的微博内容,HBase实战项目
Hbase实战之谷粒微博 1 需求分析 1) 微博内容的浏览,数据库表设计 2) 用户社交体现:关注用户,取关用户 3) 拉取关注的人的微博内容 2 代码实现 2.1 代码设计总览: 1) 创建命名空 ...
- Tableau 中的表计算图解(表和区的向下横穿)
表依据计算可以分为三类: 基于"表"的计算 基于"区"的计算 基于"单元格"的计算 一.基于"表"计算 是指,对视图中整 ...
- mysql中关系怎么弄_mysql数据库关系操作
### mysql数据库 #### 知识要点: 1. 数据操作增.删.改 2. 外键约束要求 3. 一对多表关系 4. 一对一表关系 5. 多对多表关系 6. 外键约束的参照操作 ### 数据操作 # ...
- flask_sqlalchemy 多对多 关系 对中间表的操作
文章目录 注意 多对多关系表 创建(同时添加中间表page_tag) 不可以只查询一张表来删除(这种做法只能删除一部分.) 应该查询2张表后删除(只删除 中间表page_tag 中的数据) 添加(只添 ...
- 从java中的hibernate看Ado.net 与NHibernate的关系
看了许多人的文章,将Ado.net 与NHibernate看作类似的东西,频繁将两者进行比较.对于那些朋友的观点,我不认同! 我认为ado.net 和 nhibernate是完全不同层次的东 ...
- Django模型基础(三)——关系表的数据操作
模型之间可以有三种表关系,即一对一,一对多和多对多.表关联之间的数据操作在Django中可以很方便的操作到.在模型中,表关联的字段类型是关联表的实例,而不是字段本身类型.关联字段在数据库中会在其后补上 ...
最新文章
- 深度学习:垃圾自动分类
- HDOJ 3966 Aragorn#39;s Story
- 贝壳找房挖到AI大牛叶杰平,房产中介转型需要技术,高估值更需要
- Mybatis-Plus主要功能详解
- WebUploader 设置单个文件上传
- 数据泵导入远程oracle,数据泵导入导出远程数据库数据
- 计算机教育类会议论文,中国教育和科研网(CERNET)第七届学术会议征集论文通知...
- 像人类一样理解言外之意,阿里AI最新研究成果被国际顶会收录
- mysql怎么查找删除重复数据_Mysql中如何查找并删除重复数据
- WEBPACK+ES6+REACT入门(2/7)-在项目中使用react以及JSX语法介绍
- python语言程序设计实践教程陈东_《Python语言程序设计实践教程》陈东著【摘要 书评 在线阅读】-苏宁易购图书...
- Word:表格中绘制斜线表头
- 求最小公倍数的两种算法(最大公约数的三种算法)
- 原生JS实现记忆翻牌小游戏
- 等级保护工作十大误区--转
- React中文文档 7. 条件渲染
- 酷派7296刷机包 高仿IOS美化 细节精仿
- 研究生导师的“难言之隐”
- Mysql报文理解mtu拆包依据(tso/gro)
- python 游戏开发_Python游戏开发入门
热门文章
- java keygenerator_spring-cache -KeyGenerator自定义
- hbuilder打包的app如何设置自动清理缓存_手机空间不足,这些“隐形”文件如何找到删除?...
- 华为数据通信部门怎么样_华为最高级别认证适合小白吗
- 商品规格可选怎么设计_两分钟前|开平木质地栈板怎么安装
- content-type的作用
- 006_JDK的Number派生类对Comparable接口的实现
- 032_jdbc-mysql批量操作
- 070_获取日期方法
- python xlrd xlwt综合_xlrd和xlwt -- python
- axios拦截器_78.1K 的 Axios 项目有哪些值得借鉴的地方