this.AList = new List(); } 第二,在控制器中 var info = 从数据库查询出的总数据...(B表) foreach (var item in info) { model.AList.Add(new SelectListItem...//AList在A表 { Text = item.Name, Value =...item.Id.ToString(), Selected = model.BId == item.Id //Name和Id是属于B表的...BId是在表里面自定义的 }); } 第三,在视图view中(强类型) @Html.NopDropDownListFor
大家好,又见面了,我是你们的朋友全栈君。 什么是NHibernate: NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。...Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具。 NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。...假设你正在为你的网站开发一个基本的用户管理子系统。我们将使用如下的一张User表(假定你已经设置好一个数据库—在的例子里我称它为NHibernate)。...最易于管理的办法是为每一个类写一个映射文件,如果你命名它是YourObject.hbm.xml 并且把它放在和类的同一个目录里,NHiberante将会使得事情简单起来。...你的数据库里有一张User表。 现在可以在你的代码中恰当简洁的使用NHibernate。简化的版本如下 1. 创建一个Configuration对象 2.
大家好,又见面了,我是你们的朋友全栈君。 一、NHibernate简介 在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。...NHibernate是一个面向.Net环境的对象/关系数据库映射工具。...NHibernate除了能将一张表映射为一个对象,还可以将表间关系变为对象的属性。例如学生和课程间的多对多关系就可以转化为学生类中的一个课程集合的属性。...创建一个用于测试的表 这里需要创建3张表,分别用于保存:学生、课程、选课信息。可以用Sql语句来创建,也可以用其他方式创建。...含有关系的表指的是像学生这样,除了保存学生的基本信息,还希望把选课信息保存到学生的类中。
本篇文章阅读对象是:Nhibernate初学者!如果你是Nhibernate的研究者或者已经很熟练的运用Nhibernate请不吝赐教,对本文不足之处进行指教。 带着问题去学习!...3、怎么搭建Nhibernate? 4、怎么使用Nhibernate? 好,我们就带着这几个问题开始我们的Nhibernate的旅程。 ...先看一张经典的图: ORM:对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型表示的对象映射到基于SQL 的关系模型数据结构中去...先看项目整体图,作为初学的demo 没有层次,没有优化,只是作为入门的一个简单介绍! 第一步:设计数据库中的表。建立一个User表。...然后对应数据库的表名。设置延迟加载为false。具体可以参考Nhibernate官方文档。 3、一定要将这个文件的属性:生成操作设置为嵌入资源!
NHibernate是一个基于.Net,用于关系数据库的对象持久化类库.它是著名的Hibernate的.Net版本....NHibernate用于把你的.Net对象持久化到底层的关系数据库中.你完全不用自己编写Sql语句去操作这些对象,NH会代替你做.你的代码里面只需要关心这些对象,NH生成sql语句并能为你取到正确的东西...步骤1:创建数据库表 我们正在做的是一个非常简单的NH示例.在这个例子里面,我们实现一个基本的用户管理子系统.我们将会使用一个user表(sql server 2000): use NHibernate...,如果你把命名为"XXX.hbm.xml"的映射文件和XXX类文件放在同一目录下,NH会很让 一切变得很轻松.这儿,我们的User.hbm.xml可能会像这样: 的映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly("NHibernate.Demo.QuickStart
NHibernate是一个面向.NET环境的对象/关系数据库映射框架,主要应用在数据持久层,和其它的ORM框架一样用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。...Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化框架。...开始做一个简单的增删改查示例,如图1示例: 图1 1、创建数据库与表,这里假设使用NibernateDemo数据库,Users表包括(id,name,pwd)字段,id是主键自动增长,name与pwd...3、编写实体类(POCO,Plain Old CLR Objects),映射文件包含POCO类映射到一个或者多个数据库表的元数据信息。User.cs文件如下所示。...4、为POCO类编写写一个数据库映射文件,其实User.hbm.xml映射文件包含了对象/关系映射(ORM)所需的元数据。元数据包含持久化类的声明和属性到数据库的映射。
/关系数据库映射工具。...对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型表示的对象映射到基于SQL 的关系模型数据结构中去。...NHibernate不仅仅管理.NET 类到数据库表的映射(包括.NET 数据类型到SQL 数据类型的映射),还提供数据查询和获取数据的方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据的时间...virtual,要不然会报错 (4) 下面我们开始为People实体类进行数据库表映射配置People.hbm.xml NHibernate要知道怎样去加载和存储持久化类的对象。...这正是NHibernate映射文件发挥作用的地方。映射文件包含了对象/关系映射所需的元数据。元数据包含持久化类的声明和属性到数据库的映射。
大家好,又见面了,我是你们的朋友全栈君。 什么是NHibernate? NHibernate是一个基于.Net,用于关系数据库的对象持久化类库.它是著名的Hibernate的.Net版本....NHibernate用于把你的.Net对象持久化到底层的关系数据库中.你完全不用自己编写Sql语句去操作这些对象,NH会代替你做.你的代码里面只需要关心这些对象,NH生成sql语句并能为你取到正确的东西...步骤1:创建数据库表 我们正在做的是一个非常简单的NH示例.在这个例子里面,我们实现一个基本的用户管理子系统.我们将会使用一个user表(sql server 2000): use NHibernate...,如果你把命名为”XXX.hbm.xml”的映射文件和XXX类文件放在同一目录下,NH会很让 一切变得很轻松.这儿,我们的User.hbm.xml可能会像这样: 的映射关系, Configuration cfg = new Configuration(); cfg.AddAssembly(“NHibernate.Demo.QuickStart
从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前的代码,我会另外进行说明 继承 在OOP中,继承作为OO中重要的特性,如果NHibernate没有对它的支持,...Table per class hierarchy(所有子类在一张表) Table per subclass(父类一张表,每个子类一张表) Other(其他方式) 准备 我们还是以前两篇的电子商务来说事...中,一定看到过了,其实就是把父类、子类的所有属性放到一个表中,这样做的好处就是我们不需要建立其他表,一张表格全搞定,但缺点也显而易见,在属性少的情况下或许没有什么,但是多了以后,我们的维护、扩展就变得相对麻烦...Table per subclass 在这种方式中,一个父类表包括了一些共同的属性,子类表除了主键外,就只有属于自己的属性。...其他方式 Table per concrete class(每个子类一张表),这种方式应该使用union-subclass标签,但FNT不支持这种方式,为什么呢,呵呵,因为这种方式不好,无论是从结构还是编写上来说
一个B2C的电子商务,我们一定需要产品和订单,因为是示例,所以尽可能的简单,我们先设计两张表:Order 和 Product ?...今天的内容不涉及关联关系,所以我们今天暂且不说Order。 好了,接下来开始我们的代码演示阶段。...回答是当然需要,因为我们这里的属性名与表中的主键名是相同的,所以没有进行设置,如果你数据库的主键名是ID,这里我们只需要Id(m => m.ProductID).ColumnName(“ID”),你可以看到上述映射中的...Price,我用了一下,其实不用也是没有关系的,只是做演示。...前几天的开篇“Fluent NHibernate之旅一”,反响不是很好,或许大家用NHibernate的真的很少,或许我写的不够好,或许。。。。
NHibernate对数据库结构提供了较为完整的封装,NHibernate的O/R Mapping实现了PO 和数据库表之间的映射,以及SQL 的自动生成和执行。...程序员往往只需定义好了PO 到数据库表的映射关系,即可通过NHibernate提供的方法完成持久层操作。...而IbatisNet的着力点,则在于PO 与SQL之间的映射关系。也就是说,IbatisNet并不会为程序员在运行期自动生成SQL 执行。...使用IbatisNet提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的DotNet对象,这一层与通过NHibernate实现ORM 而言基本一致,而对于具体的数据操作,NHibernate会自动生成...同样的需求 ,IbatisNet 的工作量比 NHibernate 要大很多。
完美支持Sql Server(2000至最新版),MySql,Oracle,Access,Sqlite等数据库 支持大量Lambda表达式写法,国产ORM支持度最高,开源中国ORM排行前三 不需要像NHibernate...ServiceStack.OrmLite的宗旨:Fast, Simple, Typed ORM for .NET 特点: 开源、收费(免费版只支持单个库10张表) 推荐等级:★★★☆☆ Entity Framework...(EF) ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。...推荐等级:★★★☆☆ NHibernate NHibernate是一个面向.NET环境的对象/关系数据库映射工具。...对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。
最早的项目中,我们使用了最传统的XML配置文件的方式编写映射关系,但是这样太麻烦,每次修改class和表时都要去修改对应的XML文件,而且还容易出错,一定有疏忽遗漏的地方,还不容易找出错误,所以在第二个项目中...使用Fluent NHibernate的最大好处是降低了出错的机会,因为Fluent Nhibernate的配置是使用C#来编写,可以智能感知,而且还能编译,不像原始的XML配置,写错了都不知道。...(比如CostCenter中有public virtual long Id{get;set;},对应表中的列COST_CENTER_ID) 对于一对多的关系,使用父方的类名作为属性名,表中使用父表的主键列名作为对应的外键列的列名...Students{get;set;},而在Student类中就必须使用Class作为属性名:public virtual Class Class{get;set;}) 对于SubClass,采用将多个子对象都存在同一个表中的方式实现...对于多对多的关系,把两个类对应的表名进行排序,将小的排前面,然后将两个表名连接起来,中间使用“_”分割。
NHibernate 代码映射实体类 关于代码映射 NHibernate 3.2 自带了代码映射机制, 作为 xml 映射之外的一种映射方式, 由于推出的时间比较晚, 所以资料相对比较少, 而且与社区版的...下面就通过一个实例来说明怎么使用 NHibernate 自带的代码映射。 实体关系 要映射的类关系图如下: ?...上图中有三个实体类, 他们之间的关系说明如下: Product 与 Store 之间是多对多关系; Store 与 Employee 之间是一对多关系; Employee 与 Store 之间是多对一关系...public ProductMapping() { // 此处添加映射代码 } } 映射到数据表 使用 Table 函数将类映射到制定的数据表: Table("product")...mapper.CompileMappingForAllExplicitlyAddedEntities(); config.AddMapping(mapping); 导出到数据库 也可以向 xml 映射那样, 将映射导出到数据库, 创建对应的数据表以及表关系
不过,有社区爱好者开发了一个名为《Fluent NHibernate》的项目,用来支持NHibernate的流式配置。...接下来,让我们探索class如何映射成的。 1.2.1 id 任何一个映射都必须声明一个数据表的主键,大多数类也必须有一个唯一标示字段用来区分不同的实例。...column:对应数据表的列名 type:数据库中的类型 1.2.3 many-to-one 在Nhibernate中,多对一的配置是在一的一端,表示该类有一个外键导航。...class="ManyClass" column="Column" > 1.2.4 one-to-one 一对一的关系与多对一的关系比较相似...,不同的地方在于一对一需要在双方的映射关系里均要维护,在有外键的表/实体中 添加 constrained=“true”。
用于开发项目的高级语言(C#、Java等)是面向对象的,而关系型数据库是基于关系的,两者之间的沟通需要一种转换,也就是对象/关系数据库映射(Object/Relational Mapping,简称ORM...C#可用以解决对象/关系数据库映射的工具有多种,常见的有EF (Entity Framework)、NHibernate、iBATIS等,各自的优缺点及适用场景在此不做讨论,本文只对如何使用NHibernate...NHibernate是一个面向.NET环境的对象/关系数据库映射工具。 1. 创建项目文件 在Visual Studio开发工具里创建需要的项目结构。 2....创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然在很多案例中这可能是一对一关系,但这并不是必定的。...class元素表示到单个POCO的映射。name表示上面的程序集和命名空间中的类名,table属性告诉NHibernate数据库中的哪个表或者视图将被映射。
前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate的创建和使用。这一篇,我继续探索NHibernate背后的秘密。嗯,就是这样。 1....NHibernate结构 先给小伙伴们放个图: ? 这是NHibernate的整体结构图。...实例状态 在NHibernate中,一个可持久化的对象有三种不同的状态,依据与持久化上下文之间的关系不同,其中ISession就是一个持久化上下文。...dialect 数据库方言,表示NHibernate连接的数据库是什么,该用哪种格式解析关系映射到数据库SQL语句 default_schema 默认的schema,用来设置连接字符串连接的数据库默认的...其中create表示每次只创建新增的;create-drop表示每次ISessionFactory创建时创建表 ,ISessionFactory关闭时,删除表;其中update表示每次都会将DDL SQL
在NHibernate中经常遇到继承与关系数据库的ORMapping的问题,我之前的一篇博客(http://www.cnblogs.com/studyzy/archive/2011/08/16/2140675...(类表继承) 其中单表继承是我个人比较常用比较推荐的做法。...在NHibernate中经常会遇到通过父类的Repository来查询子类的情况,比如现在有一个抽象的Employee对象,下面有OfficeUser和Teacher两个具体的对象,这两个对象都有其特有的属性...必须这么写,不能写成大写的Class,也不能换成其他字,只有这样才能让NHibernate理解,并正确返回结果。...以上是以最简单了例子说明了如果通过父类查询具体的子类的方法,实际项目中肯定比这个查询要复杂,但是只要记住了这三种查询的要点,结合其他条件就可以写出NHibernate能够理解的查询。
NHibernate 批量数据插入测试 .Net 环境下测试 数据库环境以及 NHibernate 配置 SQL Server 环境为 VS2013 自带的 localdb v11.0, 对应的 NHibernate...10.0.11 稳定版, 对应的 NHibernate 配置为: var cfg = new Configuration(); cfg.SetProperty(Environment.ConnectionString...没有提供针对 MySQL 的 BatchingBatcherFactory , 针对 MySQL 的测试加载了第三方的 NHibernate.MySQLBatcher 测试代码 插入数据的测试代码如下...的 Session 和 StatelessSession 在纯插入数据时性能相当, 只是 StatelessSession 不会检查 实体类约束关系, 比如有重复 Id 的实体类。...开发环境测试结果 运行单元测试的结果如下图所示: ? 从上图单元测试运行时间看, 在同一台机器上, SqlServer 的性能大概是 MariaDB 5~6 倍。
Mapping 今天我们将说一下ORM中的R映射,我们现在的数据库大多都是关系型数据库了,所以可以说关系在我们数据库设计中也是非常重要的部分,NHibernate也非常重视这一块,但在传统方式中,配置就比较麻烦...数据库关系 数据库关系一般有: 1、一对一 2、一对多 3、多对多 开始 结合我们前三个系列的示例,我们这一次加一个用户表[User],目的就是存储用户信息所用,再加一个UserDetail,作为用户的详细信息...,却会抛出异常,因为NHibernate不支持one-to-one的Lazy的特性,也就是说NHibernate不支持一对一的延迟加载。...NHibernate是不支持one-to-one的延迟加载的,我也不知道为什么,但我们可以婉转的进行延迟加载,老赵已经在他的文章“NHibernate中一对一关联的延迟加载”中提出了解决方案,大家可以看一下...今天说了关联中比较简单的一对一关系,其实一对一关系并不简单,第一次接触的时候,难免会遇到各种问题,很欢迎大家能留言,大家一起讨论问题。
领取专属 10元无门槛券
手把手带您无忧上云