这两天刚把 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() 函数
- public Configuration GetConfig()
- {
- try
- {
- Configuration cfg = new Configuration();
- cfg.SetProperty("hibernate.connection.provider",
- "NHibernate.Connection.DriverConnectionProvider");
- //请修改此行中的SQLServer的配置
- cfg.SetProperty("hibernate.connection.connection_string",
- "Data Source=WANGQI\\SQLEXPRESS;Database=tempdb;User ID=sa;Password=sa;Trusted_Connection=False");
- cfg.SetProperty("hibernate.dialect", "NHibernate.Dialect.MsSql2005Dialect");
- cfg.SetProperty("hibernate.connection.driver_class", "NHibernate.Driver.SqlClientDriver");
- cfg.AddAssembly("NHibernateSample");
- return cfg;
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- Console.WriteLine(ex.StackTrace);
- }
- return null;
- }
3.修改 UserFixture 类的 ValidateQuickStart() 函数
- try
- {
- // Method 1
- //newUser = (User)session.Load(typeof(User), "joe_cool");
- // Method 2
- // LINQ 查询
- //IList list = session.Find("from User as user where user.id like ?",
- // "joe_cool1", NHibernateUtil.String);
- //newUser = (list.Count!=0)?(User)list[0]:null;
-
- // Method 3
- // 普通SQL查询
- //String sqlQuery = "select * from my_users as usr where usr.LogonId like :pLogonId";
- //IList list = session.CreateSQLQuery(sqlQuery).AddEntity(typeof(User)).SetString(
- // "pLogonId", "joe_cool1").List();
- //newUser = (list.Count != 0) ? (User)list[0] : null;
- // Method 4
- // Nibernate Expression
- IList list = session.CreateCriteria(typeof(User))
- .Add(Expression.Like("Id","%joe_cool%"))
- .List();
- newUser = (list.Count != 0) ? (User)list[0] : null;
- }catch(){}
3. 修改User.hmb.xml文件
- <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">