nhibernate之many-to-many的性能
NHibernate简化了DLL,但降低了性能?
Northwind的Employee和Territories具有多对多的关系,关系存放在EmployeeTerritories表里。
所以在两个Entity建立many-to-many。
Employees.hbm.xml:
<bag name="EmployeeTerritories" table="EmployeeTerritories" inverse="false" lazy="true" cascade="all-delete-orphan">
<key>
<column name="EmployeeID" length="4" sql-type="int" not-null="true"/>
</key>
<many-to-many class="DataEntity.Territory, DataEntity">
<column name="TerritoryID" length="20" sql-type="nvarchar" not-null="true"/>
</many-to-many>
</bag>
Territories.hbm.xml:
<bag name="TerritoryEmployees" table="EmployeeTerritories" inverse="true" lazy="true" cascade="all-delete-orphan">
<key>
<column name="TerritoryID" length="20" sql-type="nvarchar" not-null="true"/>
</key>
<many-to-many class="DataEntity.Employee, DataEntity">
<column name="EmployeeID" length="4" sql-type="int" not-null="true"/>
</many-to-many>
</bag>
在EmployeeTerritories里,原先Employee有一个记录对应Territories的5条记录,
EmployeeID territoryid
15 01881
15 01882
15 01883
15 01884
15 01885
现在要给这个EmployeeID=15的记录添加新的Territories记录(territoryid=01886)
ISession session = SessionFactory.OpenSession(_AssemblyName);
Employee employee = null;
Territory territory = null;
//try...
//catch...
//finaly...
ITransaction transaction = session.BeginTransaction();
territory = (Territory)session.Get(typeof(Territory), "01886");
transaction.Commit();
transaction = session.BeginTransaction();
employee = (Employee)session.Get(typeof(Employee), 15);
employee.EmployeeTerritories.Add(territory);
session.Update(employee);
transaction.Commit();
用sql查看器查看,发现sql先delete了原来的EmployeeID=15的5条记录,然后再insert这5条记录,再insert新的id=01886的记录,总共执行了7条sql语句
如果原先有上百条记录,那不是要执行几百条记录了?NHibernate中有没有什么配置可以改变?
转载于:https://www.cnblogs.com/sunsolaris/archive/2008/10/10/1308256.html
nhibernate之many-to-many的性能相关推荐
- 测试 ClownFish、CYQ、Entity Framework、Moon、MySoft、NHibernate、PDF、XCode数据访问组件性能...
下期预告: 由于很多园友反馈,有的组件不应该缺席.测试复杂度不够.测试还缺乏一定的公平. 因此考虑在下一个版本中,确保在更加公平的前提下进行更高复杂度的测试 . 同时将分为2组测试,纯SQL组件及纯O ...
- ADO.NET、ODP.NET、Linq to SQL、ADO.NET Entity 、NHibernate在Oracle下的性能比较
下面我对Oracle数据库在.NET平台下的主要几种数据访问方式进行测试. 下面是测试表: CREATE TABLE CUSTOMERS ( "CUSTOMER_ID" NUMBE ...
- 测试 ClownFish、CYQ、Entity Framework、Moon、MySoft、NHibernate、PDF、XCode数据访问组件性能
"啊!你在用ORM?会不会性能很差啊?" 用数字来说话,打破模糊的.传言的印象. 标题提到的组件"增删改查"都实现了测试代码,所以除了测试外,也可以把此项目作为 ...
- DataVeryLite和Nhibernate性能对比
电脑型号:acer 4752g 电脑配置: 代码分享: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Debug.Listen ...
- .net平台性能很不错的轻型ORM类Dapper(转)
.net平台性能很不错的轻型ORM类Dapper Posted By : 蓝狐 Updated On : 2016-04-22 23:16 dapper只有一个代码文件,完全开源,你可以放在项目里的任 ...
- [NHibernate] Guid 作主键速度超慢的背后
最近遇到了一个让人抓狂的性能问题.生产环境里有一张表的数据量目前达到了 70 万条.结果发现无论是匹配主键的查询还是更新,执行一条语句居然需要 3.5 秒!如果把 NH Prof 中截获的 SQL 语 ...
- NHibernate Step by Step:序篇 (转)
原文出处:http://www.cnblogs.com/abluedog/archive/2006/04/15/375676.html 原文作者:abluedog 很久以前,你可能习惯了connect ...
- 从java中的hibernate看Ado.net 与NHibernate的关系
看了许多人的文章,将Ado.net 与NHibernate看作类似的东西,频繁将两者进行比较.对于那些朋友的观点,我不认同! 我认为ado.net 和 nhibernate是完全不同层次的东 ...
- NHibernate: Session.Save 采用版本控制时无必要地自动Update版本字段的问题
最近发现一个问题,Session.Save(entity)时,如果entity是新实体(version字段为0,假设0为unsaved-value),则NHibernate执行的SQL除了应该出现的I ...
最新文章
- 五分钟使你的Firefox快两倍
- python软件是干什么用的-python中的django是做什么的
- Java黑皮书课后题第5章:5.6(英里与千米之间的互换)编写一个程序,并排显示下面两个表格
- “只有DBA才能导入由其他DBA导出的文件”各种解决办法
- 怎么用计算机求浮动额,2015计算机一级考试MSOFFICE上机综合训练(5)
- 服务器拒绝mac访问共享文件,Mac共享文件连接失败怎么办?Mac无法访问打开共享文件解决方法...
- oracle建表语句6,Oracle建表语句
- 【20220627】【信号处理】自相关函数的定义、计算方法及应用
- python 折线图 excel_如何使用python读取excel数据并绘制折线图
- 中国石油大学(北京)-《 公共社交礼仪 》-答案
- 大业达公司裁员风云2
- springboot实现pdf里面插入图片
- Markdown设置图片大小
- FastReport开发指南
- MonoRail学习笔记四:MonoRail基本流程分析
- libevent 使用流程
- 盘点世界上奇怪的 6 种编程语言
- Swagger UI教程 API 文档神器 搭配Node使用
- vs2015配置VAssistX
- 腾讯优测优分享 | 分布式系统测试的应用方法——场景注入测试