NHibernate是一个面向.NET环境的对象/关系数据库映射框架,主要应用在数据持久层,和其它的ORM框架一样用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...元数据包含持久化类的声明和属性到数据库的映射。该文件将POPO类型与数据表进行映射。User.hbm.xml内容如下所示。 <?xml version="1.0" encoding="utf-8" ?...NHibernateHelper.GetCurrentSession(); ITransaction transaction = session.BeginTransaction(); session.Save...(user); transaction.Commit(); return user.Id; } ...总结:这个示例算是对Nhibernate学习的一个“Hello world”,内容中有不少是参照前辈们的文章,我只是学习和分享学习。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。...article/details/53198870 首先,C#中通过映射对MySQL数据进行操作需要导入:FluentNHibernate.dll和NHibernate.dll...userList = session.QueryOver().Where(user => user.Username == username); transaction.Commit...using (var transaction = session.BeginTransaction()) { session.Save...(user); transaction.Commit(); } } } public
今天说一说Nhibernate_nhibernate与ef区别,希望能够帮助大家进步!!! 什么是NHibernate?...驱动,连接到本地的nhibernate数据库,并且使用提供的用户和密码.还会有其他的配置项,你可以参看文档....Configuration对象知道所有在.Net类和后端数据库之间的映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly("NHibernate.Demo.QuickStart...that this object should be saved session.Save(newUser); // commit all of the changes to the DB and...close the ISession transaction.Commit(); session.Close(); 这就是NH的好处,大部分时间内你只用关心你的业务对象(BO).
经过了“开篇”和“简单映射”两篇文章,相信大家对Fluent NHibernate 有了一定的了解了,FluentNHibernate实际就是对 NHibernate 映射的一定扩展,我们能完全利用强类型...从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前的代码,我会另外进行说明 继承 在OOP中,继承作为OO中重要的特性,如果NHibernate没有对它的支持,...好,我们假设我们的产品还有书和手机,他们有各自自己的属性,我们就简单加一点属性,书有作者,手机有品牌和型号,我们写这2个Entity Model: public class MobileProduct...其他方式 Table per concrete class(每个子类一张表),这种方式应该使用union-subclass标签,但FNT不支持这种方式,为什么呢,呵呵,因为这种方式不好,无论是从结构还是编写上来说...,都是不好的做法,尽量避免的做法,所以FNT索性不支持了,如果真的需要这种方式,那你就直接分开映射ClassMap吧,联合查询的话,或许就比较复杂了。
步骤3:编写映射文件(Mapping File) 现在我们有了数据库表和.Net类,我们还需要告诉NH怎样在数据库和类之间映射.这就需要映射文件了.最简捷(也是可维护性最好的)方法就是为每一个类编写一个映射文件...驱动,连接到本地的nhibernate数据库,并且使用提供的用户和密码.还会有其他的配置项,你可以参看文档....Configuration对象知道所有在.Net类和后端数据库之间的映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly(“NHibernate.Demo.QuickStart...that this object should be saved session.Save(newUser); // commit all of the changes to the DB and...close the ISession transaction.Commit(); session.Close(); 这就是NH的好处,大部分时间内你只用关心你的业务对象(BO).
经过了前面三篇的介绍,相信大家对Fluent NHibernate已经有一定的了解了,在我们学习中,Fluent 也已经进入了RTM版本。...够简单的吧,User和UserDetail是一对一关系,构建我们的实体类: public class User { public virtual int UserID { get; set; }...LastUpdated = createTime, }; detail.User = user; user.Detail = detail; session.Save...不支持one-to-one的Lazy的特性,也就是说NHibernate不支持一对一的延迟加载。...NHibernate是不支持one-to-one的延迟加载的,我也不知道为什么,但我们可以婉转的进行延迟加载,老赵已经在他的文章“NHibernate中一对一关联的延迟加载”中提出了解决方案,大家可以看一下
从个人感受上看,NHibernate显然是从上而下(Top-down)的方式,天然的POCO支持就是最好的佐证。...其实ORM和DP的存在就是要实现这两个方向的能力和支持,否则就没有存在的必要,因为自上而下(Top-down)和自下而上(Bottom-up)两种方式由来已久,解决这两个方向的问题,ORM工具或E/R模型编程未必是最好的方式...同样仔细想想Entity Framework(也许NHibernate也是)在从外向里(Outside-in)方向也提供了支持,这也就是Dsimmons为代表的EF大佬经常说的,Entity Framework... 不是简单的ORM工具,它主要是提供一个完全贴近现实的E/R模型,这个模型可以进行数据编程(DP),也可以建模和进行数据表现,最重要的是这个模型可以被共享和重用(目前比较成功的一个案例就是能被ADO.NET... Data Service 共享和重用),另外一个方面SQL Server的功能再逐渐增强以及新近的LINQ等数据库+DP的功能混杂和爆发,都在另外一个角度朝从下向上推进,这种情况下Mapping是可以限定在某些功能和场景的
学习和使用Nhibernate已经很久了,一直想写点东西和大家一起学习使用Nhibernate。博客园里也有很多大牛写了很多关于Nhibernate入门的文章。...3、怎么搭建Nhibernate? 4、怎么使用Nhibernate? 好,我们就带着这几个问题开始我们的Nhibernate的旅程。 ...看下面代码: User myUser = new User(); //User初始化........ session.Save(myUser);//保存一个用户 session.Update(myUser...第四个问题: 使用和测试你的配置【可以爽一把了!】 ...LastTimeLogOn = DateTime.Now, Name= "ml",NickName="malun",PassWord="123",Phone="nihao" }; session.Save
本文链接:https://blog.csdn.net/zhao1299002788/article/details/100623007 1.1 多表关系分析和创建. 1.1.1 表关系分析和创建...表数据和表数据之间可以存在的关系?...(customer); // session.save(linkMan1); transaction.commit(); } 保存联系人级联保存客户...(customer); session.save(linkMan1); transaction.commit(); } 1.2.7 测试级联和对象导航(...(user1); session.save(user2); session.save(role1); session.save(role2); session.save(
从个人感受上看,NHibernate显然是从上而下(Top-down)的方式,天然的POCO支持就是最好的佐证。...其实ORM和DP的存在就是要实现这两个方向的能力和支持,否则就没有存在的必要,因为自上而下(Top-down)和自下而上(Bottom-up)两种方式由来已久,解决这两个方向的问题,ORM工具或E/R模型编程未必是最好的方式...同样仔细想想Entity Framework(也许NHibernate也是)在从外向里(Outside-in)方向也提供了支持,这也就是Dsimmons为代表的EF大佬经常说的,Entity Framework... Data Service 共享和重用),另外一个方面SQL Server的功能再逐渐增强以及新近的LINQ等数据库+DP的功能混杂和爆发,都在另外一个角度朝从下向上推进,这种情况下Mapping是可以限定在某些功能和场景的...从上面的描述上可以很清楚的看出Entity Framework和NHibernate的区别,虽然他们都是ORM工具,他们在ORM的各个方向的侧重是不一样.
前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate里的配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...,默认情况从Property 中读取 default-lazy:可选的,默认是true,是否启动延迟加载 1.2 class的配置 一般情况下,class节点只需要指定name和table就可以了。...} public ISession Session { get; } 2.1 新增 现在我们写一下新增方法: public object Add(T entity){ var key= Session.Save...return key; } public void Add(params T[] entities){ foreach (var entity in entities) { Session.Save...UPDATE NOWAIT PostgreSQL 8.2 NHibernate.Dialect.PostgreSQL82Dialect 在DROP TABLE和DROP SEQUENCE 语句中支持
NHibernate 批量数据插入测试 .Net 环境下测试 数据库环境以及 NHibernate 配置 SQL Server 环境为 VS2013 自带的 localdb v11.0, 对应的 NHibernate..., Data3 = random.NextDouble(), UpdateTime = DateTime.Now }; session.Save...(data); } session.Flush(); session.Clear(); } 经过测试发现, NHibernate 的 Session 和 StatelessSession...生产环境测试结果 将测试数据库分别部署在 SQL Server 2012 和 MariaDB 内网的服务器上, 服务器硬件配置几乎一致, 数据库版本也与开发环境 一致, 反复运行测试, 结果大致如下:...测试总结 从上面的测试结果可以看出, mono 和 .net 的性能是差不多的, 可以说是不相伯仲, MySQL 的性能也是不错的, 最终的结论是 mono + mysql 是可以值得信赖的。
需求:汽车和轮子。汽车需要用到轮子,但是轮子的爸爸不可能是汽车吧? 设计数据库 ?...保存的是cat和monkey。...(cat); session.save(monkey); //提交事务 transaction.commit(); //关闭Session session.close();...(cat); session.save(monkey); //提交事务 transaction.commit(); //关闭Session session.close();...(cat); session.save(monkey); //提交事务 transaction.commit(); //关闭Session session.close();
在第一篇文章中有几个地方作为第一个Nhibernate入门demo还有很多不足!今天特意写点补充知识!...Nhibernate自动到项目输出中查找此文件。必须将此文件的属性设置为始终复制。...问题二:在webconfig中配置Nhibernate,不使用单独的:hibernate.cfg.xml 在webconfig中配置Nhibernate是我们另外一种配置方式。格式如下: <?..., NHibernate" /> <!...这样实现后我们的调用代码就变得简单多了,看一下代码 ISession session = NhibernateHelper.GetCurrentSession(); //.....User 初始化 session.Save
在NHibernate中不用特殊的修饰就可以让对象和持久化层交互。...可以借助MyGeneration自动代码工具从数据表生成数据模型和对应的映射文件。...name表示上面的程序集和命名空间中的类名,table属性告诉NHibernate数据库中的哪个表或者视图将被映射。 id元素告诉NHibernate哪个数据库的字段和对应的对象作为一个唯一键来使用。...ISession session = NHibernateHelper.OpenSession()) { id = long.Parse(session.Save...session = NHibernateHelper.OpenSession()) { object returnObject = session.Save
如果你要体验NHibernate的强大,首先你就要学会配置,包括SessionFactory和Mapping的配置。今天跟上一篇一样,会使用传统方式和 NHibernate 进行讲解。...如果你要亲手试验一下,可以先看一下“Fluent NHibernate之旅一”,进行一下数据库和SessionFactory的准备。...一个B2C的电子商务,我们一定需要产品和订单,因为是示例,所以尽可能的简单,我们先设计两张表:Order 和 Product ?...product.CreateTime = DateTime.Now; product.Name = "First Product"; product.Price = 15; session.Save..., State = OrderState.Created, CreateTime = DateTime.Now }; session.Save
在项目中NHibernate进行ORMapping,操作数据库变得非常简单,但是NHibernate中有很多特性不是很容易理解,比如Inverse这个功能就是其中的一个。...接下来举一个具体的例子,部门和员工,一对多关系,部门D1,D2,员工U1和U2,D1的Users里面有U1和U2,U1对象引用D1,U2对象引用D2。...如果是改为Inverse=True,那么然后保存d1和d2,那么对应的SQL是: NHibernate: INSERT INTO DEPARTMENT (NAME, DEPARTMENT_ID) VALUES...比如有员工E1和E2,奖品A1和A2,其是多对多关系,如果要设置E1员工获得A1和A2奖,那么需要设置各自的集合: 1: Emp e1=new Emp(){Name = "E1"}; 2...mapping.HasManyToMany(a => a.Awards).Not.Inverse(); } } 这样设置了Mapping后,就可以生成正确的SQL语句,当然如果把C#代码中的6行和7
想一下,List集合和Set集合有什么区别…List集合是有序的,因此要多配置一个列来维护数据的有序性!...这样才可以维护员工和部门之间的关系 ? 这里写图片描述 设计实体 部门实体要使用一个集合来记住所有的员工,员工要使用一个对象引用着部门 ?...(dept); session.save(zs); session.save(ls); //提交事务 transaction.commit...(dept); session.save(zs); session.save(ls); //提交事务 transaction.commit...(oa); session.save(ds); //提交事务 transaction.commit(); //关闭Session
sessionFactory.openSession(); //开启事务 transaction=session.beginTransaction(); } @After public void destroy(){ transaction.commit...testSaveStudents(){//保存学生用例对象 //生成学生对象 Students s1=new Students(2,"有缘人","女",new Date(),"地球"); session.save...(s1);//保存对象进入数据库,无须写sql语句 } 如果注释掉开启事务的语句 transaction=session.beginTransaction(); 以及提交事务的语句, transaction.commit
nhibernate-configuration.xsd和nhibernate-mapping.xsd两个文件暂时不知道要干什么用的。...且nhibernate-configuration.xsd和nhibernate-mapping.xsd是要放到c盘的,路径如下: C:\Program Files (x86)\Microsoft Visual...一、建立了一个类库程序,引用Iesi.Collections.dll和NHibernate.dll两个DLL。 接下来,我们开始建立持久化对象。...Session = session; } public void CreateCustomer(Test test) { Session.Save...我并不清楚那几个点的原理和含义,因为我没看Nhibernate的原代码。 虽然本文是讲述,配置Nhibernate;但我更想讲述的是,面对未知的框架入手学习和使用的方法。
领取专属 10元无门槛券
手把手带您无忧上云