今天说一说Nhibernate_nhibernate与ef区别,希望能够帮助大家进步!!! 什么是NHibernate?...创建需要被持久化的.Net类. 3. 创建映射文件,以告诉NH怎样持久化这些类的属性. 4. 创建NH的配置文件,以告诉NH怎样连接数据库. 5....步骤3:编写映射文件(Mapping File) 现在我们有了数据库表和.Net类,我们还需要告诉NH怎样在数据库和类之间映射.这就需要映射文件了.最简捷(也是可维护性最好的)方法就是为每一个类编写一个映射文件...name"属性值就是我们写的.Net类中的属性,column属性值就是在数据库中与'Net类属性对应的字段名.type属性是可选的(如果你没有标明,NH会给出一个最适合的),但是推荐的做法是带上这个属性...告诉Configuration你想要持久化哪一种对象. 3. 创建一个Session连接到你设定的数据库. 4. 载入,保存和查询你的对象. 5.
NHibernate实践与模式 NHibernate是一款非常优秀的O/R mapping的开源框架,再还没有.net的时候它已经存在于java环境中。...开发环境 Vs.net 2005, NHibernate 1.20(正是版),MyGeneration 1.3。...然后再去创建数据库表,和UI的部分; 我还是按在有数据表的情况下如何用NHibernate作开发 1.用MyGeneration创建实体类和mapping文件选择NHibernate lujan99 1.06...3.接下去网上下载几个通用的类库文件包括配置文件NHibernateSessionManager.cs(用来创建session和管理session), NHibernateSessionModule.cs...1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 5.基本配置完成,下面就是开始写代码了 代码实践与模式
学习和使用Nhibernate已经很久了,一直想写点东西和大家一起学习使用Nhibernate。博客园里也有很多大牛写了很多关于Nhibernate入门的文章。...本篇文章阅读对象是:Nhibernate初学者!如果你是Nhibernate的研究者或者已经很熟练的运用Nhibernate请不吝赐教,对本文不足之处进行指教。 带着问题去学习!...学完这些后,希望你能回答下面几个问题: 1、Nhibernate是什么? 2、Nhibernate能做什么?带给我们的什么? ...3、怎么搭建Nhibernate? 4、怎么使用Nhibernate? 好,我们就带着这几个问题开始我们的Nhibernate的旅程。 ...具体可以参考Nhibernate官方文档。 3、一定要将这个文件的属性:生成操作设置为嵌入资源!
网上大多数是以xml的方式配置nhibernate,本文则已class的方式来配置,并通过IOC(依赖注入,本文以构造注入)的方式注册nhibernate。...1、Web工程(demo采用的是MVC框架),在项目下添加一个IOC文件夹,并在文件夹下添加一下类,工程图如图所示: 2、web.Model 3、web.Service IOC a....即nhibernate的mapping。...Property(b => b.ModifiedTime, m => m.Column("modified_time")); } } } Web.Service:—-该模块主要包含用与nhibernate...; using NHibernate.Cfg; using NHibernate.Cfg.MappingSchema; using NHibernate.Dialect; using NHibernate.Driver
在第一篇文章中有几个地方作为第一个Nhibernate入门demo还有很多不足!今天特意写点补充知识!...请先阅读:Nhibernate入门与demo 以下是我们项目的升级的地方: 先看一下程序结构的截图: 问题一:关于hibernate.cfg.xml配置文件。...Nhibernate自动到项目输出中查找此文件。必须将此文件的属性设置为始终复制。...问题二:在webconfig中配置Nhibernate,不使用单独的:hibernate.cfg.xml 在webconfig中配置Nhibernate是我们另外一种配置方式。格式如下: NHibernate" /> <!
关于NHibernate 的one to one标签上的constrained="true",该标签在外表上设置,千万不要在主表上设置。...就是说明这个表的主键与另一个表的主键建立外键约束,也就是说在生成SQL脚本时,会为这个表创建外键,如果不加,是不会创建外键的。...这其实又带来了另外一个问题,这可能是NHibernate没有考虑到的地方,那就是我们采用的是软删除,也就是说根本不会从数据库删除数据,只是把IS_DELETED置为1。...那么,我们如果先保存了A和X的关系,接下来由于X被取消,所以我删除了X,接下来添加Y与A关联就会失败。...3.双向外键关联 就是说CLASS表中有CLASSROOM_ID,然后在CLASSROOM表中也有CLASS_ID。这是非常不推荐的方式,一来导致数据维护重复,二来导致数据可能存在不一致。
开始做一个简单的增删改查示例,如图1示例: 图1 1、创建数据库与表,这里假设使用NibernateDemo数据库,Users表包括(id,name,pwd)字段,id是主键自动增长,name与pwd...2、新建项目并添加引用,将NHibernate-3.3.0.GA-bin中的“Iesi.Collections.dll”与“NHibernate”引用到项目中,如图2所示复制Configuration_Templates...3、编写实体类(POCO,Plain Old CLR Objects),映射文件包含POCO类映射到一个或者多个数据库表的元数据信息。User.cs文件如下所示。...:选择User.hbm.xml文件->属性->生成操作,设置这个属性的值为“嵌入的资源” 图3 5、定义NHibernateHelper的帮助类,Isession是NHibernate的工作单元,它是一个持久化管理器...; namespace NHibernateDemo.WebUI { public class UsersDAL { //介于NHibernate与.NET应用程序中的主运行接口
现在的项目中数据访问使用的是NHibernate的一个ORM框架,小弟也是在后期加入项目组,之前对NHibernate就一直没有接触过,所以一直在学习NHibernate,都是一些很基础的一些东西,写出来总结一下...NHibernate的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的95%。并请记住NHibernate作为数据库访问层,是与你的程序紧密集成的。...primary key NOT NULL, [Name] [nvarchar](10) NULL, [Age] [int] NULL, [Sex] [nvarchar](1) NULL, ) GO 3、...ISession不是线程安全的,它代表与数据库之间的一次操作。ISession通过ISessionFactory打开,在所有的工作完成后,需要关闭。...ISession GetSession() { return _sessionFactory.OpenSession(); } } (3)
NHibernate对数据库结构提供了较为完整的封装,NHibernate的O/R Mapping实现了PO 和数据库表之间的映射,以及SQL 的自动生成和执行。...而IbatisNet的着力点,则在于PO 与SQL之间的映射关系。也就是说,IbatisNet并不会为程序员在运行期自动生成SQL 执行。...使用IbatisNet提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的DotNet对象,这一层与通过NHibernate实现ORM 而言基本一致,而对于具体的数据操作,NHibernate会自动生成...IbatisNet 非常简单易学, NHibernate 相对较复杂,门槛较高。 2 . 二者都是比较优秀的开源产品 3 ....If you are accessing any 3rd party databases (e.g. vendor supplied), or you're working with a legacy
前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate的创建和使用。这一篇,我继续探索NHibernate背后的秘密。嗯,就是这样。 1....它们可能只是一些普通的POCO,仅仅是与ISession中关联起来了。只要ISession关闭了,这些对象就可以被分离出来然后可以在应用层的任意地方使用。...实例状态 在NHibernate中,一个可持久化的对象有三种不同的状态,依据与持久化上下文之间的关系不同,其中ISession就是一个持久化上下文。...detached 游离态 该状态的对象是从上下文中分离出来的,有了数据库主键,曾经或现在仍然有一条数据库记录与之对应。...3. 配置项介绍 在上一篇文章中,我们介绍了一下如何设置NHibernate的基本配置项,但是并未对配置项进行深入。
NHibernate 批量数据插入测试 .Net 环境下测试 数据库环境以及 NHibernate 配置 SQL Server 环境为 VS2013 自带的 localdb v11.0, 对应的 NHibernate..."); cfg.SetProperty(Environment.ConnectionDriver, "NHibernate.Driver.SqlClientDriver"); cfg.SetProperty..."); cfg.SetProperty(Environment.ConnectionDriver, "NHibernate.Driver.MySqlDataDriver"); cfg.SetProperty...Test Data " + i, Data1 = random.Next(), Data2 = random.Next(), Data3...生产环境测试结果 将测试数据库分别部署在 SQL Server 2012 和 MariaDB 内网的服务器上, 服务器硬件配置几乎一致, 数据库版本也与开发环境 一致, 反复运行测试, 结果大致如下:
C#—Nhibernate探索 本篇文章,让我们一起来探索Nhibernate。 首先我们去搜索Nhibernate下载地址,如下链接所示。 该版本可能是最新版,我下载的4.0.4.GA。...nhibernate-configuration.xsd和nhibernate-mapping.xsd两个文件暂时不知道要干什么用的。...再之后,我上网调查了下Nhibernate的应用。 上网调查后,发现Nhibernate有Castle框架、LinFu框架、Spring.Net三种。...public virtual int Id { get; set; } public virtual string Name { get; set; } } 接下来建立持久化对象与数据库的映射...调查结果: 对象与数据库的映射是保存在XML文件中的,于是我配置XML映射文件如下。 该XML文件的属性,要求设置其生成操作为【嵌入的资源】。 但我怕它丢失,还给他设置了始终复制的属性。
在 .NET Core 应用中使用 NHibernate NHibernate 最近发布了 5.1.3 版本, 支持 .NET Standard 2.0 , 这意味着可以在 .NET Core 2.0...包以及对应的数据库驱动程序(以 Npgsql 为例): dotnet add pakcage NHibernate dotnet add package NHibernate.NetCore dotnet...Include="NpgSql" Version="4.0.2" /> 3、 在项目中新建一个 Models 目录, 并创建实体类以及对应的 xml 映射文件, 代码如下...> <hibernate-mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3...[0] NHibernate 5.1.3 (assembly 5.1.0.0) info: NHibernate.Cfg.Environment[0] hibernate-configuration
|save-update" (2) auto-import="true|false" (3)...class="ManyClass" column="Column" > 1.2.4 one-to-one 一对一的关系与多对一的关系比较相似...2.2 修改 NHibernate的修改与EF类似,也是由ISession监控了修改,不用做过多的操作。...3. 总结 嗯,NHibernate基础使用篇到这里可以暂告一段落了。后续的内容有机会再深挖,当然并不代表EF Core就没有了。嗯嗯,没毛病。...Microsoft SQL Server Compact Edition 4.0 NHibernate.Dialect.MsSqlCe40Dialect MySQL 3 or 4 NHibernate.Dialect.MySQLDialect
NHibernate 缓存 NHibernate 支持两种级别的缓存, 即一级缓存以及二级缓存。...2、测试 Get 与 Load 方法 session 提供了 Get 和 Load 两个方法, 这两个方法有什么区别呢?...[Description] as column3_0_, category0_.[Picture] as column4_0_ from [dbo]....NHibernate 的二级缓存是可以扩展的, NHibernate.ControlLib 提供了几个实现, 分别适用于不同的场景: NHibernate.Caches.MemCache NHibernate.Caches.Prevalence...NHibernate.Caches.SharedCache NHibernate.Caches.SysCache NHibernate.Caches.SysCache2 NHibernate.Caches.Velocity
什么是NHibernate: NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。...Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具。 NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。...开发的过程: 1.新建一个将要持久化.Net对象的表 2.构建一个需要被持久化的.Net类 3.构建一个可以让NHibernate知道如何持久化对象属性的映射文件...DATABASE “NHibernate” GO CREATE DATABASE “NHibernate” GO use NHibernate go CREATE TABLE...让Configuration知道你将存储何种类型的对象 3. 为你选择的数据库创建一个Session对象 4. Load,Save和Query你的对象 5.
使用代码配置 NHibernate 多数情况下 NHibernate 使用配置文件进行配置, 但是我们也可以使用代码进行配置, 步骤如下: 1、 创建一个 Configuration using Nhibernate.cfg...") .SetProperty("connection.driver_class", "NHibernate.Driver.SqlClientDriver") .SetProperty("dialect...", "NHibernate.Dialect.MsSql2005Dialect") .SetProperty("proxyfactory.factory_class", "NHibernate.Bytecode.DefaultProxyFactoryFactory...", connectionString); 2、 添加映射 using NHibernate.Mapping.ByCode; var mapper = new ModelMapper(); mapper.Class...cat => cat.Description, map => { map.Column("Description"); map.Length(200); }); }); 3、
NHibernate is a port of Hibernate to the .NET platform....After several years of development, the first stable version of NHibernate, version 1.0, is now available...With the release of version 1.0, NHibernate is also joining the original Hibernate project at JBoss Inc...More information about NHibernate: http://www.nhibernate.org/ Download NHibernate 1.0: http://sourceforge.net...(3)HQL查询语句。 学习NHibernate有一个非常好的开源的CMS/Portal系统例子,这个例子作的非常棒。
NHibernate 介绍 NHibernate是Hibernate的C#版,众所周知Hibernate是Java 里ORM的顶梁柱(至少曾经)。...不过,与EntityFramework不同的地方是,Hibernate以配置文件为主,通过配置文件规范使用,Object/Relation 映射。...而NHibernate这继承了这一点,也是以配置文件优先。下图是 NHibernate的工作原理: ?...然后安装NHibernate: NuGet: Install-Package NHibernate dotnet core 命令行: dotnet add package NHibernate 这个文章中使用的...嗯,给大家一个NHibernate的图: ? 3. 总结 NHibernate延续了Hibernate的优点,如果之前了解过Hibernate的人上手不难。轻量简单,不过得需要配置文件。
如果你要体验NHibernate的强大,首先你就要学会配置,包括SessionFactory和Mapping的配置。今天跟上一篇一样,会使用传统方式和 NHibernate 进行讲解。...回答是当然需要,因为我们这里的属性名与表中的主键名是相同的,所以没有进行设置,如果你数据库的主键名是ID,这里我们只需要Id(m => m.ProductID).ColumnName(“ID”),你可以看到上述映射中的...Map(Expression> expression):与Id类似,对应NHibernate中的property,我这里只是简单的映射,还有很多特性,在今后的教程中会慢慢使用...前几天的开篇“Fluent NHibernate之旅一”,反响不是很好,或许大家用NHibernate的真的很少,或许我写的不够好,或许。。。。...不过这不影响我需要完成这个系列的愿望,因为真的遇到了太多难以解决的问题,确实在解决中学到了很多,我很希望能把这一切与大家一起分享,至于好与坏,待大家来评价吧。 PS:终于可以上网了,憋了好久啊,哈哈
领取专属 10元无门槛券
手把手带您无忧上云