博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NHibernate系列文章二:创建NHibernate工程
阅读量:5281 次
发布时间:2019-06-14

本文共 4617 字,大约阅读时间需要 15 分钟。

摘要

这篇文章介绍了如何创建一个简单的使用NHibernate的控制台应用程序,包括使用NuGet、简单的配置、单表映射、对NHibernate配置文件添加智能提示、使用ISessionFactory和ISession。

1. 环境准备

Visual Studio 2015、SQL Server 2008或者SQL Server 2008 R2。

2. 创建工程

1)创建空控制台应用程序NHibernateDemoApp。

2)添加NHibernate到工程。右键NHibernateDemoApp工程,选择"Manage NuGet Packages..."。

3)在打开的"NuGet Packages Manager"上选择"Browse",输入"NHibernate",查出最新的NHibernate版本,选择版本4.0.0.4000,点击"Install"。

 在弹出的对话框里选择"OK"。看到将安装NHibernate.4.0.4.4000和Iesi.Collections.4.0.0.4000。

安装完成后,在Output里出现这个Successfully的结果。

再来看NHibernateDemoApp的Reference。已经添加了NHibernate和Iesi.Collections进来。

也可以到NHibernate官网去下载最新的版本。下载地址

3. 创建SQL Server数据库NHibernateDemoDB

创建表Customer

设置Id为主键,设置Id列的Identity属性。

4. 创建Customer类

1 using System; 2  3 namespace NHibernateDemoApp 4 { 5     public class Customer 6     { 7         public virtual int Id { get; set; } 8         public virtual string FirstName { get; set; } 9         public virtual string LastName { get; set; }10         public virtual double AverageRating { get; set; }11         public virtual int Points { get; set; }12         public virtual bool HasGoldStatus { get; set; }13         public virtual DateTime MemberSince { get; set; }14         public virtual CustomerCreditRating CreditRating { get; set; }15         public virtual string Street { get; set; }16         public virtual string City { get; set; }17         public virtual string Province { get; set; }18         public virtual string Country { get; set; }19     }20 21     public enum CustomerCreditRating22     {23         Excellent, VeryVeryGood, VeryGood, Good, Neutral, Poor, Terrible24     }25 }

注意:

  • 所有属性都为virtual,为了支持Lazy Loading。
  • 所有属性的访问属性都为Public,不然NHibernate找不到该属性。
  • 类属性是Public,不然NHibernate找不到该类。

5. 创建Customer.hbm.xml

  • 注意hibernate-mapping的assembly、namespace属性要填写正确
  • class的name属性表示类名,table是映射的表名,如果类名称和表名称相同,可以省略table属性
  • property的name属性是类的属性名,如果类属性名和表的列名相同,可以省略column属性
  • property的type属性表示.net类属性映射的NHibernate数据类型。如果是int、bool、double这样的.net基础数据类型,则可以省略
  • property的type属性如果是DateTime、string,也可以省略
  • property的not-null属性对应关系表的列的nullable属性,默认值是false。因此,如果允许为空,则可以省略
  • id表示主键,name为主键名,<generator class="native"/>表示数据表的主键按简单Identity的自增算法生成新记录主键值(NHibernate提供了多种主键值生成算法,这里只用最简单的Identity算法)
  • 文件名必须以.hbm.xml结尾

6. 修改Customer.hbm.xml文件属性

  • Build Action: Embedded Resource
  • Copy to Output Directory: Copy always
  • 如果不设置这两个属性,后面执行的时候会出错

7. 为NHibernate工程的xml配置文件添加智能提示

点击工具栏上的XML->Schma,打开"XML Schemas"窗口。

点击"Add",选择"nhibernate-configuration.xsd"和"nhibernate-mapping.xsd"两文件。这两文件存在于当前工程下的"$\packages\NHibernate.4.0.4.4000"文件夹下。选择后点"OK"。

 加入之后,再编辑Customer.hbm.xml文件会出现智能提示。

有时候重启Visual Studio后,智能提示都会消失了,要重新加载这两个文件。

8. 修改Program类

1 using NHibernate.Cfg; 2 using NHibernate.Dialect; 3 using NHibernate.Driver; 4 using System; 5 using System.Reflection; 6  7 namespace NHibernateDemoApp 8 { 9     class Program10     {11         static void Main(string[] args)12         {13             var cfg = new Configuration();14 15             cfg.DataBaseIntegration(x =>16             {17                 x.ConnectionString = "Data Source=localhost;Initial Catalog=NHibernateDemoDB;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";18                 x.Driver
();19 x.Dialect
();20 });21 cfg.AddAssembly(Assembly.GetExecutingAssembly());22 var sefact = cfg.BuildSessionFactory();23 using (var session = sefact.OpenSession())24 {25 using (var tx = session.BeginTransaction())26 {27 //perform database logic 28 tx.Commit();29 Console.WriteLine("Well Done");30 }31 Console.ReadLine();32 }33 }34 }35 }
  • Configuration类对象相当于ADO.Net的Connection对象,但是他包含更丰富的配置信息。
  • 调用cfg.DataBaseIntegration方法进行配置,这里配置了:数据库连接字符串、使用连接的Driver类SqlClientDriver和使用Dialect类MsSql2008Dialect
  • cfg.AddAssembly(Assembly.GetExecutingAssembly());是告诉NHibernate去哪里找xml映射文件信息。这里是从正在执行的assembly中查找
  • SessionFactory和Session是NHibernate的基础类,SessionFactory编译所有的元数据,产生Session。Session封装了所有的NHibernate方法

9. 执行程序,得到运行结果

 到此为止,我们setup了一个简单的NHibernate环境,包括安装NHibernate,加入智能提示,添加映射文件。

下一节介绍简单的NHibernate查询,添加,修改,删除操作。

 

posted on
2016-07-02 09:53 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/uncle_danny/p/5633766.html

你可能感兴趣的文章
Laravel学习笔记(三)数据库 数据库迁移
查看>>
ORACLE查看并修改最大连接数
查看>>
box-flex不均分问题
查看>>
Python--GIL 详解
查看>>
Oracle数据导入Mysql中
查看>>
BZOJ-4424 &&CodeForces-19E Fairy DP+dfs (Link-Cut-Tree可A)
查看>>
MongoDB学习笔记——聚合操作之group,distinct,count
查看>>
大道至简读后感(第四章)
查看>>
IDA IDC Tutorials: Additional Auto-Commenting
查看>>
k8s-存储卷1-十二
查看>>
在Android中Intent的概念及应用(二)——Intent过滤器相关选项
查看>>
数据库备份问题
查看>>
前端面试题(4)iframe有哪些优点?iframe缺点是什么?
查看>>
第十六章 多态性(一)
查看>>
INSERT IGNORE INTO / REPLACE INTO
查看>>
Python数据类型-布尔/数字/字符串/列表/元组/字典/集合
查看>>
MFC中theApp
查看>>
类的无参方法
查看>>
Python 开发:初识Python(记笔记)
查看>>
sqlrelay 的安装配置和应用
查看>>