本文共 3191 字,大约阅读时间需要 10 分钟。
我们成功的运行了自己的第一个Spring.NET程序和第一个NHibernate程序。下面我们将上面的程序整合到一个项目中来。让Spring.NET的容器来管理NHibernate。 建立新的项目(SpringNHibernateSample) 项目名称为:SpringNHibernateSample 名字空间:OKEC.Sample 添加NHibernate程序 将NHibernateSample项目的User.cs、User.hbm.xml加入的新的项目中。 并修改User.hbm.xml,将其中的 <class name=" OKEC.Sample.NHibernate.NHibernateTest.User,NHibernateSample" table="my_users"> 改为 <class name=" OKEC.Sample.NHibernate.NHibernateTest.User,SpringNHibernateSample" table="my_users"> 添加Spring.NET的程序 n 首先,需要将SpringSample项目中的HelloTest.cs、Spring_bean.xml、SpringContext.cs加入到新的项目,并修改其中有用到程序集相关的地方。 如将Spring_bean.xml中的: <object id="Hello" type="OKEC.Sample.Spring.HelloTest,SpringSample" /> 改为 <object id="Hello" type="OKEC.Sample.Spring.HelloTest,SpringNHibernateSample" /> n 然后, 添加一个为NHibernate提供DbProvider的实现类,此类实现了Spring.Data.Common.IDbProvider接口,为NHibernate提供DbProvider所需的链接字串(ConnectionString)。 using System; using Spring.Data.Common; namespace OKEC.Sample.Spring { /// <summary> /// SQLPriv 的摘要说明。 /// </summary> public class SQLProvider:IDbProvider { public SQLProvider() { // // TODO: 在此处添加构造函数逻辑 // } #region IDbProvider 成员 public System.Data.IDbConnection CreateConnection() { // TODO: 添加 SQLPriv.CreateConnection 实现 return null; } public string CreateParameterName(string name) { // TODO: 添加 SQLPriv.CreateParameterName 实现 return null; } public System.Data.IDbDataParameter CreateParameter() { // TODO: 添加 SQLPriv.CreateParameter 实现 return null; } private string _connectionString=""; public string ConnectionString { get { // TODO: 添加 SQLPriv.ConnectionString getter 实现 return _connectionString; } set { _connectionString = value; // TODO: 添加 SQLPriv.ConnectionString setter 实现 } } public string ExtractError(Exception e) { // TODO: 添加 SQLPriv.ExtractError 实现 return null; } public System.Data.IDbDataAdapter CreateDataAdapter() { // TODO: 添加 SQLPriv.CreateDataAdapter 实现 return null; } public bool IsDataAccessException(Exception e) { // TODO: 添加 SQLPriv.IsDataAccessException 实现 return false; } public System.Data.IDbCommand CreateCommand() { // TODO: 添加 SQLPriv.CreateCommand 实现 return null; } public object CreateCommandBuilder() { // TODO: 添加 SQLPriv.CreateCommandBuilder 实现 return null; } public IDbMetadata DbMetadata { get { // TODO: 添加 SQLPriv.DbMetadata getter 实现 return null; } } #endregion } } n 最后,添加一个Spring.Data.NHibernate对NHibernate的封装对像,此对像实现对User对像数据操作,继承自 Spring.Data.NHibernate.Support.HibernateDaoSupport。 using System; using System.Collections; using Spring.Data.NHibernate.Support; namespace OKEC.Sample.NHibernate.NHibernateTest { /// <summary> /// UserDao 的摘要说明。 /// </summary> public class UserDao : HibernateDaoSupport { public UserDao() { // // TODO: 在此处添加构造函数逻辑 // } public bool SaveObject(User user) { HibernateTemplate.Save(user); return true; } public bool DeleteObject(User user) { HibernateTemplate.Delete(user); return true; } public bool UpdateObject(User user) { HibernateTemplate.Update(user); return true; } public IList GetAllObjectsList() { return HibernateTemplate.LoadAll(typeof(User)); } public User Load(Object ID) { return (User)HibernateTemplate.Load(typeof(User),ID); } } }
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/20/1911846.html,如需转载请自行联系原作者