从个人感受上看,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显然是从上而下(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的各个方向的侧重是不一样.
NHibernate 缓存 NHibernate 支持两种级别的缓存, 即一级缓存以及二级缓存。...2、测试 Get 与 Load 方法 session 提供了 Get 和 Load 两个方法, 这两个方法有什么区别呢?...注意: 如果查询时不想使用一级缓存, 可以 StatelessSession 对象, 和 Session 对象用法一样, 只是该对象没有一级缓存。...NHibernate 的二级缓存是可以扩展的, NHibernate.ControlLib 提供了几个实现, 分别适用于不同的场景: NHibernate.Caches.MemCache NHibernate.Caches.Prevalence...NHibernate.Caches.SharedCache NHibernate.Caches.SysCache NHibernate.Caches.SysCache2 NHibernate.Caches.Velocity
今天说一说Nhibernate_nhibernate与ef区别,希望能够帮助大家进步!!! 什么是NHibernate?...步骤3:编写映射文件(Mapping File) 现在我们有了数据库表和.Net类,我们还需要告诉NH怎样在数据库和类之间映射.这就需要映射文件了.最简捷(也是可维护性最好的)方法就是为每一个类编写一个映射文件...让我们返回到"id" tag,你可能会猜想这个tag和映射到表的Primary Key有关.正确.ID tag的格式和Property tag的相似.我们从Property(name)映射到目标数据库的字段...驱动,连接到本地的nhibernate数据库,并且使用提供的用户和密码.还会有其他的配置项,你可以参看文档....Configuration对象知道所有在.Net类和后端数据库之间的映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly("NHibernate.Demo.QuickStart
一、NHibernate简介 在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。NHibernate是一个面向.Net环境的对象/关系数据库映射工具。...NHibernate除了能将一张表映射为一个对象,还可以将表间关系变为对象的属性。例如学生和课程间的多对多关系就可以转化为学生类中的一个课程集合的属性。...由此可见,NHibernate不仅仅管理.Net类到数据库表的映射,还提供数据查询和获取数据的方法。因此采用NHibernate,可以大幅度减少开发时人工使用SQL处理数据的时间。...创建.Net类和与其对应的XML文件 (1) 单表的情况 单表的情况就是指该表没有和其他表有关联的情况。这样情况下,可以用软件来辅助产生类和对应的XML文件。...这样情况下不能用软件来辅助产生对应的类和XML,这是NHibernate中唯一需要费脑筋学的地方。
NHibernate对数据库结构提供了较为完整的封装,NHibernate的O/R Mapping实现了PO 和数据库表之间的映射,以及SQL 的自动生成和执行。...使用IbatisNet提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的DotNet对象,这一层与通过NHibernate实现ORM 而言基本一致,而对于具体的数据操作,NHibernate会自动生成...当系统属于二次开发 , 无法对数据库结构做到控制和修改 , 那 IbatisNet 的灵活性将比 NHibernate 更适合 4 ....在这种情况下 IbatisNet 会有更好的可控性和表现。 5 ....同样的需求 ,IbatisNet 的工作量比 NHibernate 要大很多。
NHibernate 支持两种级别的缓存, 即一级缓存以及二级缓存。...2、测试 Get 与 Load 方法 session 提供了 Get 和 Load 两个方法, 这两个方法有什么区别呢?...注意: 如果查询时不想使用一级缓存, 可以 StatelessSession 对象, 和 Session 对象用法一样, 只是该对象没有一级缓存。...NHibernate 的二级缓存是可以扩展的, NHibernate.ControlLib 提供了几个实现, 分别适用于不同的场景: NHibernate.Caches.MemCache NHibernate.Caches.Prevalence...NHibernate.Caches.SharedCache NHibernate.Caches.SysCache NHibernate.Caches.SysCache2 NHibernate.Caches.Velocity
转载:http://www.cnblogs.com/tenghoo/archive/2011/02/14/1954393.html NHibernate专题:http://kb.cnblogs.com/...zt/nhibernate/ NHibernate官方站点:http://nhforge.org/ NHibernate参考文档:http://nhforge.org/doc/nh/en/ 获取NHibernate...地址:http://sourceforge.net/projects/nhibernate/ public IList GetUserOrderByUserID(string userid...select p; return list.ToList(); } } NHibernate...分页的测试 http://www.cnblogs.com/chenyt/archive/2010/12/04/nhibernate.html
NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。...第三步:写映射文件 现在我们有数据表和需要去映射它的.Net类。我们需要一种方式去让NHibernate知道如何从一个映射到另一个。这个任务依赖于映射文件来完成。...这里我们将映射类型名称(类名,装配件)到我们数据库中的User表,这里和Hibernate有一点点的不同。你将不得不告诉NHibernate从何处提取对象。...NHibernate 遵循和.Net Framework同样的规则来加载类型。因此如果你在如何指定类型的方面有些混淆,请参看.Net Framework SDK。...的数据库,提供用户名和密码。
现在的项目中数据访问使用的是NHibernate的一个ORM框架,小弟也是在后期加入项目组,之前对NHibernate就一直没有接触过,所以一直在学习NHibernate,都是一些很基础的一些东西,写出来总结一下...NHibernate不仅仅管理.NET 类到数据库表的映射(包括.NET 数据类型到SQL 数据类型的映射),还提供数据查询和获取数据的方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据的时间...这个实例我编写了一个辅助类NHibernateHelper 用于创建ISessionFactory并配置ISessionFactory和打开一个新的Session单线程的方法,之后在每个数据操作类可以使用这个辅助类创建...要知道怎样去加载和存储持久化类的对象。...这正是NHibernate映射文件发挥作用的地方。映射文件包含了对象/关系映射所需的元数据。元数据包含持久化类的声明和属性到数据库的映射。
在项目中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
NHibernate实践与模式 NHibernate是一款非常优秀的O/R mapping的开源框架,再还没有.net的时候它已经存在于java环境中。...从而大大减少sql层的bug和开发时间,提高开发效率。 开发环境 Vs.net 2005, NHibernate 1.20(正是版),MyGeneration 1.3。...当然还有很多NHibernate的开发框架大家可以在www.codeproject.com,www.codeplex.com上找到。...然后再去创建数据库表,和UI的部分; 我还是按在有数据表的情况下如何用NHibernate作开发 1.用MyGeneration创建实体类和mapping文件选择NHibernate lujan99 1.06...3.接下去网上下载几个通用的类库文件包括配置文件NHibernateSessionManager.cs(用来创建session和管理session), NHibernateSessionModule.cs
本篇内容: 1、初识Fluent NHibernate(简称Fluent) 2、使用NHibernate和Fluent创建ISessionFactory 3、传统方式和Fluent的对比。...在开始之前,我们先下载它的Dll,当然你也可以下载它的源代码进行修改和学习。...下载地址:http://fluentnhibernate.org/ 二、使用NHibernate和Fluent创建ISessionFactory 准备工作: 1、下载Fluent类库,其中已经包含了NHibernate...因为Fluent是基于NHibernate的,它只实现了NHibernate的Mapping功能,其他功能还不能代替,所以我们的项目中要同时引入NHibernate和FluentNHibernate两个类库...三、传统方式和Fluent的对比 上面的演示相信大家都能看明白,两者之间的对比也比较明显的显露出来,传统的方式我们只需要编写正确的配置文件,相对比较灵活,一些修改的话都可以在配置文件中进行更新
学习和使用Nhibernate已经很久了,一直想写点东西和大家一起学习使用Nhibernate。博客园里也有很多大牛写了很多关于Nhibernate入门的文章。...本篇文章阅读对象是:Nhibernate初学者!如果你是Nhibernate的研究者或者已经很熟练的运用Nhibernate请不吝赐教,对本文不足之处进行指教。 带着问题去学习!...学完这些后,希望你能回答下面几个问题: 1、Nhibernate是什么? 2、Nhibernate能做什么?带给我们的什么? ...3、怎么搭建Nhibernate? 4、怎么使用Nhibernate? 好,我们就带着这几个问题开始我们的Nhibernate的旅程。 ...第四个问题: 使用和测试你的配置【可以爽一把了!】
NHibernate Contrib Best Practice 介绍 NHibernate Contrib(Burrow)是一个轻量级的开发中间件,底层使用Nhibernate 2.0GA(Nhibernate...2.0的.hbm.xml和1.2是兼容的) ORM技术框架实现。...Burrow功能 Burrow Conversation:可以很轻松的开发业务流程 GenericDAO:尽可能少接触ISession(会话和事务) Stateful...> 添加HttpModule Setting 用于管理会话和事务 维护hibernate.cfg.xml 实体数据库位置和实体类的程序集如果需要同时连接多个数据库之需要添加多个配置文件 <section name=
NHibernate 使用 SqlQuery 多数情况下, NHibernate 提供的 HQL、 Linq 以及条件查询足够用了, 但是在某些情况下, 需要使用 SqlQuery, 使用 SqlQuery
但是在项目有时我们并没有采用Entity Framework,而是采用的NHibernate,那么该怎么用OData呢? 经过一段时间的Google和研究,终于找到了一个好的方案。...在OData API查询时,用户前端是url跟参数,但是在服务器端,我们是接收到的是一个ODataQueryOptions对象,其实我们需要做的就是把这个对象进行解析,生成NHibernate能够理解的查询形式...网上找到微软官方已经写了这么个转换方法,主要是对ODataQueryOptions对象下的Filter和OrderBy进行转换,另外两个参数Top和Skip很简单,就是一个整数。...SourceControl/changeset/view/72014f4c779e#Samples/WebApi/NHibernateQueryableSample/System.Web.Http.OData.NHibernate.../NHibernateFilterBinder.cs Filter和OrderBy属性都会被转换成HQL,然后我们就需要进行NHibernate的查询了。
步骤3:编写映射文件(Mapping File) 现在我们有了数据库表和.Net类,我们还需要告诉NH怎样在数据库和类之间映射.这就需要映射文件了.最简捷(也是可维护性最好的)方法就是为每一个类编写一个映射文件...名)映射到数据库中的user表(这里和hibernate有些不同,我们必须告诉NH这个类从哪儿来的.这个差异是由.Net和Java Reflect机制的不同引起的-zyyang).这种情况下,我们是从Assembly...让我们返回到”id” tag,你可能会猜想这个tag和映射到表的Primary Key有关.正确.ID tag的格式和Property tag的相似.我们从Property(name)映射到目标数据库的字段...驱动,连接到本地的nhibernate数据库,并且使用提供的用户和密码.还会有其他的配置项,你可以参看文档....Configuration对象知道所有在.Net类和后端数据库之间的映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly(“NHibernate.Demo.QuickStart
NHibernate使用的核心组件。...图1 添加对NHibernate的引用 3....在NHibernate中不用特殊的修饰就可以让对象和持久化层交互。...可以借助MyGeneration自动代码工具从数据表生成数据模型和对应的映射文件。...name表示上面的程序集和命名空间中的类名,table属性告诉NHibernate数据库中的哪个表或者视图将被映射。 id元素告诉NHibernate哪个数据库的字段和对应的对象作为一个唯一键来使用。
连贯NHibernate(Fluent NHibernate) 是通过编程方式而不是使用XML配置文件创建NHibernate映射的API。...它的目标是在项目中运用NHibernate时减少所遇到的困难,提供更好的可读性、可测试性和编译时的安全性。...连贯NHibernate降低了复杂性,并进一步加强了约定胜于配置的原则,即任何一个映射的最常用设置是默认的。 除了编译时的检查外连贯NHibernate还为你的映射的测试提供了一个健壮的API。...Wiki上有教程告诉怎么用,园子里的inday的几篇文章可以先看一下: [原创]Fluent NHibernate之旅 [原创]Fluent NHibernate之旅二--Entity Mapping...[原创]Fluent NHibernate之旅(三)—继承 codeproject上也有一篇针对RC的文章:Fluent NHibernate and Linq2NHibernate – Demo Project
领取专属 10元无门槛券
手把手带您无忧上云