学习Spring.NET、NHibernate[转]

    这两天刚把 NHibernate和Spring.NET 学习了一下。发现这个从Java上移植过来的.net框架的确是很方便好用的。省去了大量写SQL语句带来的麻烦,有过太多次的调试SQL语句的经历,为 了拼凑一条SQL语句,花费了很多的时间,看的头昏眼花不说,调试也很麻烦,开了查询分析器不说,还要不停的把语句从DebugInfo中 [ctrl+c][ctrl+v],费时费力。有了这个框架,就可以省去了很多的麻烦事。

    最近为了学习这两种框架技术,从网上找到了一个朋友写的blog,但是从vs2008和SQLExpress从中调试发现了一些问题。这篇文章也主要是针对这位朋友的代码进行了一些补充。

注:调试的环境是针对,vs2008 和 Microsoft SQL Server 2005 Express Edition
* 需要准备的JDK

1. VS2008,SQLServer2005 Express Edition;

2. NHibernate-2.0.1.GA-src.zip, Spring.NET-1.2.0.exe;

3. 引用的朋友博客的URL:

  C#.NET编程----Spring.NET & NHibernate整合(一)

  C#.NET编程----Spring.NET & NHibernate整合(二)

  C#.NET编程----Spring.NET & NHibernate整合(三)

 

* 针对第二个实例的补充

1. 添加NHibernate引用,位置在 "C:\Program Files\Spring.NET 1.2.0\lib\NHibernate12\net\1.1\NHibernate.dll"。

在解决方案管理器的引用上单击右键选择添加引用即可。

2. 修改 MyConfigration 类的 GetConfig() 函数

  1.         public Configuration GetConfig()
  2.         {
  3.             try
  4.             {
  5.                 Configuration cfg = new Configuration(); 
  6.                 cfg.SetProperty("hibernate.connection.provider", 
  7.                     "NHibernate.Connection.DriverConnectionProvider");

  8.                 //请修改此行中的SQLServer的配置
  9.                 cfg.SetProperty("hibernate.connection.connection_string", 
  10.                     "Data Source=WANGQI\\SQLEXPRESS;Database=tempdb;User ID=sa;Password=sa;Trusted_Connection=False");
  11.                 cfg.SetProperty("hibernate.dialect", "NHibernate.Dialect.MsSql2005Dialect");
  12.                 cfg.SetProperty("hibernate.connection.driver_class", "NHibernate.Driver.SqlClientDriver");
  13.                 cfg.AddAssembly("NHibernateSample");
  14.                 return cfg;

  15.             }
  16.             catch (Exception ex)
  17.             {
  18.                 Console.WriteLine(ex.Message);
  19.                 Console.WriteLine(ex.StackTrace);
  20.             }
  21.             return null;
  22.         }

3.修改 UserFixture 类的 ValidateQuickStart() 函数

  1.                 try
  2.                 {
  3.                     // Method 1
  4.                     //newUser = (User)session.Load(typeof(User), "joe_cool");

  5.                     // Method 2
  6.                     // LINQ 查询
  7.                     //IList list = session.Find("from User as user where user.id like ?",
  8.                      //   "joe_cool1", NHibernateUtil.String);
  9.                     //newUser = (list.Count!=0)?(User)list[0]:null;
  10.                     
  11.                     // Method 3
  12.                     // 普通SQL查询
  13.                     //String sqlQuery = "select * from my_users as usr where usr.LogonId like :pLogonId";
  14.                     //IList list = session.CreateSQLQuery(sqlQuery).AddEntity(typeof(User)).SetString(
  15.                     //    "pLogonId", "joe_cool1").List();
  16.                     //newUser = (list.Count != 0) ? (User)list[0] : null;

  17.                     // Method 4
  18.                     // Nibernate Expression
  19.                     IList list = session.CreateCriteria(typeof(User))
  20.                                 .Add(Expression.Like("Id","%joe_cool%"))
  21.                                 .List();
  22.                     newUser = (list.Count != 0) ? (User)list[0] : null;

  23.                 }catch(){}

3. 修改User.hmb.xml文件

  1. <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
原文地址:https://www.cnblogs.com/yeagen/p/1443223.html