栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C#—Nhibernate使用教程

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#—Nhibernate使用教程

本篇文章,让我们一起来探索Nhibernate。
首先我们去搜索Nhibernate下载地址,如下链接所示。
该版本可能是最新版,我下载的4.0.4.GA。其中GA意思我没搞清楚。不过应该不重要。
https://sourceforge.net/projects/nhibernate/
下载完成后,解压缩如图所示。

其中Required_Bins存储的是类库和其他资源;字面的意思Required,是必须文件。
打开Required文件夹,里是这样的。
两个类库;两个类库是要被引用的。
类库拥有对应的XML,没找到具体使用该XML的方法。所以暂时不去理他。
NHibernate.pdb应该是没有用的。估计是作者忘记删除了。
nhibernate-configuration.xsd和nhibernate-mapping.xsd是要放到c盘的,路径如下:
C:Program Files (x86)Microsoft Visual Studio 11.0XmlSchemas
因为是我用的是vs2012,所以,我找的路径是Microsoft Visual Studio 11.0。
我上网上调查了下这两个文件是做什么用的。调查结果是,这俩货是【文件智能提示功能】用的。
上网调查后,发现Nhibernate有Castle框架、LinFu框架、Spring.Net三种。
看起来很复杂,不过先不去管那么多,先直接引用类库。

然后我建立了一个类库程序,引用Iesi.Collections.dll和NHibernate.dll两个DLL。
接下来,我们开始建立持久化对象。

public class Test
    {
 public virtual int Id { get; set; }
 public virtual string Name { get; set; }
}

对象与数据库的映射是保存在XML文件中的,我们配置XML映射文件如下。
该XML文件的属性,要求设置其生成操作为【嵌入的资源】。
此外,我怕它丢失,还给他设置了始终复制的属性。

XML文件如下:




  
    
      
    
    

  

再然后,我们建立数据库连接的类。
因为我们没有显示设置数据库连接字符串,所以,我猜测这个类,会读配置文件中SQL字符串连接。

 public class NHibernateHelper
    {
 private ISessionFactory _sessionFactory;
 public NHibernateHelper()
 {
     _sessionFactory = GetSessionFactory();
 }
 private ISessionFactory GetSessionFactory()
 {
     return (new Configuration()).Configure().BuildSessionFactory();
 }
 public ISession GetSession()
 {
     return _sessionFactory.OpenSession();
 }
}

然后,我们建立domain(域),添加增删改查的方法。

public class NHibernateSample
    {
 protected ISession Session { get; set; }
 public NHibernateSample(ISession session)
 {
     Session = session;
 }

      public Test GetCustomerById(int Id) 
 { 
     return Session.Get(Id); 
 }
  }

然后,我们新建一个控制台程序,用来调用这个类库测试。

测试类代码如下。

public class NHibernateSampleFixture 
    { 
 private NHibernateSample _sample; 
 public NHibernateSampleFixture() 
 { 
     _sample = new NHibernateSample(new  NHibernateHelper().GetSession()); 
 } 
 public void GetCustomerByIdTest() 
 { 
     var tempCutomer = new Test {  Name = "李" }; 
     _sample.CreateCustomer(tempCutomer); 
     Test customer = _sample.GetCustomerById(1); 
     int customerId = customer.Id; 

 } 
}

调用如下:

class Program 
    {

 static void Main(string[] args) 
 {

     NHibernateSampleFixture f = new NHibernateSampleFixture();

     f.GetCustomerByIdTest(); 
 } 
}

测试结果是失败,因为缺少配置数据库连接的文件。
现在我们打开文件夹Configuration_Templates,发现Configuration_Templates文件夹下有如下文件。

我使用的数据库是sqlserver,所以,我复制了mssql.cfg.xml。
然后将复制的文件,黏贴到测试的控制台程序下,然后改名为《hibernate.cfg.xml》。
这里测试了下,貌似不改名不好使,配置文件内容如下
【PS:我始终没搞懂,XML中的CFG代表什么意思。】




    
 NHibernate.Driver.SqlClientDriver
 
      Server=SKY-20160718RXOSA;initial catalog=Nherbinate;Integrated Security=SSPI;
    
 NHibernate.Dialect.MsSql2012Dialect
    
  

我连接的是sqlserver2012,所以配置文件里,我有做修改,修改驱动为NHibernate.Dialect.MsSql2012Dialect。原始版是2008。
其中是后加的,原文件里没有。
这句话的意思是,映射我创建的那个类库。
我推断,Nherbinate是读这个配置文件,然后到这个程序集里,反射查询那些poco对象。
最后,nhibernate-configuration-2.2这句话我想了很久要不要改成4.0。
结果是我没改,测试一切正常。可以顺利使用。
结语
这是一场Nhibernate探索之旅,结果是非常顺利的配置成功了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/230688.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号