转 Spring.NET 与 NHibernate 的整合
生活随笔
收集整理的這篇文章主要介紹了
转 Spring.NET 与 NHibernate 的整合
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我們成功的運行了自己的第一個Spring.NET程序和第一個NHibernate程序。下面我們將上面的程序整合到一個項目中來。讓Spring.NET的容器來管理NHibernate。建立新的項目(SpringNHibernateSample)
項目名稱為:SpringNHibernateSample 名字空間:OKEC.Sample添加NHibernate程序
將NHibernateSample項目的User.cs、User.hbm.xml加入的新的項目中。
并修改User.hbm.xml,將其中的
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的實現(xiàn)類,此類實現(xiàn)了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: 在此處添加構造函數(shù)邏輯
????????????//
???????? }
????????#region IDbProvider 成員
????????public System.Data.IDbConnection CreateConnection()
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateConnection 實現(xiàn)
????????????return null;
???????? }
????????public string CreateParameterName(string name)
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateParameterName 實現(xiàn)
????????????return null;
???????? }
????????public System.Data.IDbDataParameter CreateParameter()
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateParameter 實現(xiàn)
????????????return null;
???????? }
????????private string _connectionString="";
????????public string ConnectionString
???????? {
????????????get
???????????? {
????????????????// TODO:?? 添加 SQLPriv.ConnectionString getter 實現(xiàn)
????????????????return _connectionString;
???????????? }
????????????set
???????????? {
???????????????? _connectionString = value;
????????????????// TODO:?? 添加 SQLPriv.ConnectionString setter 實現(xiàn)
???????????? }
???????? }
????????public string ExtractError(Exception e)
???????? {
????????????// TODO:?? 添加 SQLPriv.ExtractError 實現(xiàn)
????????????return null;
???????? }
????????public System.Data.IDbDataAdapter CreateDataAdapter()
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateDataAdapter 實現(xiàn)
????????????return null;
???????? }
????????public bool IsDataAccessException(Exception e)
???????? {
????????????// TODO:?? 添加 SQLPriv.IsDataAccessException 實現(xiàn)
????????????return false;
???????? }
????????public System.Data.IDbCommand CreateCommand()
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateCommand 實現(xiàn)
????????????return null;
???????? }
????????public object CreateCommandBuilder()
???????? {
????????????// TODO:?? 添加 SQLPriv.CreateCommandBuilder 實現(xiàn)
????????????return null;
???????? }
????????public IDbMetadata DbMetadata
???????? {
????????????get
???????????? {
????????????????// TODO:?? 添加 SQLPriv.DbMetadata getter 實現(xiàn)
????????????????return null;
???????????? }
???????? }
????????#endregion
???? }
}
n????????最后,添加一個Spring.Data.NHibernate對NHibernate的封裝對像,此對像實現(xiàn)對User對像數(shù)據(jù)操作,繼承自
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: 在此處添加構造函數(shù)邏輯
????????????//
???????? }
????????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);
???????? }
???? }
}
總結
以上是生活随笔為你收集整理的转 Spring.NET 与 NHibernate 的整合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#.NET编程----Spring.N
- 下一篇: asp.net ajax控件工具集 Au