哭佛林

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
NHibernate的配置文件app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    
<configSections>
        
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System,Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    
</configSections>

    
<nhibernate>
        
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
        
<add key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver" />
        
<add key="hibernate.connection.connection_string" value="Server=localhost;Initial Catalog=user;Integrated Security=SSPI" />
        
<add key="hibernate.connection.isolation" value="ReadCommitted"/>
        
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect" />
    
</nhibernate>

    
<connectionStrings>
        
<add name="SQLConnString" connectionString="Server = localhost;Initial Catalog=user;Integrated Security=SSPI" />
    
</connectionStrings>

    
<appSettings>
        
<add key="ProjectDAL" value="Kufolin.Foundation.DAL"/>
        
<add key="ModelAssembly" value="Kufolin.Foundation.Model"/>
    
</appSettings>
</configuration>

NHibernateHelper类的相关应用:
using System;
using System.Collections.Generic;
using System.Text;
using NHibernate;
using System.Data;
using System.Data.SqlClient;
using Kufolin.DBUtility;
using Kufolin.Foundation.Model;
using Kufolin.Foundation.IDAL;

namespace Kufolin.Foundation.DAL
{
    
/// <summary>
    
///  类 编 号: 12
    
///  类 名 称: IndctDAL
    
///  内容摘要: 对实体类Indct的数据库操作
    
///  完成日期: 2007-12-17 13:32:43
    
///  编码作者: 田长军
    
///  </summary>

    public class IndctDAL : IIndctDAL
    
{
        
private static ISession session = null;
        
/// <summary>
        
/// 默认构造函数
        
/// </summary>

        public IndctDAL()
        
{
            session 
= NHibernateHelper.GetCurrentSession();
        }

        
/// <summary>
        
/// 生产填充TreeView的DataSet对象
        
/// </summary>

        public DataSet CreateDataSet()
        
{
            DataSet _dataSet 
= new DataSet();
            SqlDataAdapter _adapter 
= new SqlDataAdapter();
            SqlConnection _connection 
= new SqlConnection(SqlHelper.ConnectionStringLocalTransaction);

            _adapter.SelectCommand 
= new System.Data.SqlClient.SqlCommand();
            _adapter.SelectCommand.Connection 
= _connection;
            _adapter.SelectCommand.CommandText 
= "SELECT * FROM Indct";
            _adapter.SelectCommand.CommandType 
= System.Data.CommandType.Text;

            _connection.Open();
            _adapter.Fill(_dataSet);
            _connection.Close();

            
return _dataSet;
        }

        
/// <summary>
        
/// 根据sql生成的DataSet对象
        
/// </summary>
        
/// <param name="sql">sql语句</param>
        
/// <returns>DataSet对象</returns>

        public DataSet CreateDataSet(String sql)
        
{
            DataSet _dataSet 
= new DataSet();
            SqlDataAdapter _adapter 
= new SqlDataAdapter();
            SqlConnection _connection 
= new SqlConnection(SqlHelper.ConnectionStringLocalTransaction);

            _adapter.SelectCommand 
= new System.Data.SqlClient.SqlCommand();
            _adapter.SelectCommand.Connection 
= _connection;
            _adapter.SelectCommand.CommandText 
= sql;
            _adapter.SelectCommand.CommandType 
= System.Data.CommandType.Text;

            _connection.Open();
            _adapter.Fill(_dataSet);
            _connection.Close();

            
return _dataSet;
        }

        
/// <summary>
        
/// 根据指标类别代码获得Indct对象
        
/// </summary>
        
/// <param name="indctID">指标代码</param>
        
/// <returns>指标类别对象</returns>

        public Indct GetIndct(String indctID)
        
{
            Indct indct 
= null;
            ITransaction trans 
= session.BeginTransaction();
            
try
            
{
                indct 
= (Indct)session.Load(typeof(Indct), indctID);
                trans.Commit();
            }

            
catch (ADOException re)
            
{
                indct 
= null;
            }

            
return indct;
        }

        
/// <summary>
        
/// 根据指标类别编码获取该指标类别下的所有指标
        
/// </summary>
        
/// <param name="indctClassCode">指标类别编码</param>
        
/// <returns>指标类别下的所有指标</returns>

        public IList<Indct> GetListIndct(String indctClassCode)
        
{
            IList
<Indct> indcts = new List<Indct>();
            ITransaction trans 
= session.BeginTransaction();
            
try
            
{
                IQuery query 
= session.CreateQuery("FROM Indct WHERE Indct_Class_Code LIKE :ClassCode");
                query.SetString(
"ClassCode", indctClassCode);

                indcts 
= query.List<Indct>();
                trans.Commit();
            }

            
catch (ADOException re)
            
{
                
if (trans != null) trans.Rollback();
                indcts 
= null;

                System.Windows.Forms.MessageBox.Show(re.Message);
                System.Windows.Forms.MessageBox.Show(re.StackTrace);
            }

            
return indcts;
        }

        
/// <summary>
        
/// 增加一个指标对象
        
/// </summary>
        
/// <param name="newIndct">需增加的指标对象</param>

        public void InsertIndct(Indct newIndct)
        
{
            ITransaction trans 
= session.BeginTransaction();
            
try
            
{
                
if (newIndct.Indct_Class_Code == null)
                    
//throw new Exception();
                if (newIndct.Indct_Code == null)
                    
//throw new Exception();
                if (newIndct.Indct_Name == null)
                    
//throw new Exception();
                if (newIndct.Indct_DataType < 0)
                    
//throw new Exception();
                if (newIndct.Indct_Accuracy < 0)
                    
//throw new Exception();
                if (newIndct.Indct_Method < 0)
                    
//throw new Exception();
                if (newIndct.Indct_Frequency < 0)
                    
//throw new Exception();
                if (newIndct.Indct_Type < 0)
                    
//throw new Exception();
                if (newIndct.Indct_Deployed == true)
                    
//throw new Exception();
                if (newIndct.Indct_IsRecount == true)
                    
//throw new Exception();

                session.Save(newIndct);
                trans.Commit();
            }

            
catch (ADOException e)
            
{
                
if (trans != null) trans.Rollback();
                
throw;
            }


        }

        
/// <summary>
        
/// 根据指标类别代码删除指标类别对象
        
/// </summary>
        
/// <param name="indctID">指标代码</param>

        public void DeleteInduct(String indctID)
        
{
            ITransaction trans 
= session.BeginTransaction();
            
try
            
{
                Indct indct 
= session.Get(typeof(Indct), indctID) as Indct;

                session.Delete(indct);
                trans.Commit();
            }

            
catch
            
{
                
if (trans != null) trans.Rollback();
                
throw;
            }

        }

        
/// <summary>
        
/// 编辑指标对象
        
/// </summary>
        
/// <param name="indctID">需编辑的指标对象代码</param>
        
/// <param name="newIndct">需编辑的指标对象</param>

        public void UpdateInduct(String indctID, Indct newIndct)
        
{
            ITransaction trans 
= session.BeginTransaction();

            Indct oldIndct 
= session.Get(typeof(Indct), indctID) as Indct;
            
try
            
{
                
if (newIndct.Indct_Class_Code != null)
                    oldIndct.Indct_Class_Code 
= newIndct.Indct_Class_Code;
                
if (newIndct.Indct_Code != null)
                    oldIndct.Indct_Code 
= newIndct.Indct_Code;
                
if (newIndct.Indct_Name != null)
                    oldIndct.Indct_Name 
= newIndct.Indct_Name;
                
if (newIndct.Indct_DataType != 0)
                    oldIndct.Indct_DataType 
= newIndct.Indct_DataType;
                
if (newIndct.Indct_InTable != null)
                    oldIndct.Indct_InTable 
= newIndct.Indct_InTable;
                
if (newIndct.Indct_InColumn != null)
                    oldIndct.Indct_InColumn 
= newIndct.Indct_InColumn;
                
if (newIndct.Indct_Desp != null)
                    oldIndct.Indct_Desp 
= newIndct.Indct_Desp;
                
if (newIndct.Indct_Source != 0)
                    oldIndct.Indct_Source 
= newIndct.Indct_Source;
                
if (newIndct.Indct_Unit != 0)
                    oldIndct.Indct_Unit 
= newIndct.Indct_Unit;
                
if (newIndct.Indct_ValueScope != 0)
                    oldIndct.Indct_ValueScope 
= newIndct.Indct_ValueScope;
                
if (newIndct.Indct_Accuracy != 0)
                    oldIndct.Indct_Accuracy 
= newIndct.Indct_Accuracy;
                
if (newIndct.Indct_Method != 0)
                    oldIndct.Indct_Method 
= newIndct.Indct_Method;
                
if (newIndct.Indct_Frequency != 0)
                    oldIndct.Indct_Frequency 
= newIndct.Indct_Frequency;
                
if (newIndct.Indct_Type != 0)
                    oldIndct.Indct_Type 
= newIndct.Indct_Type;
                
if (newIndct.Indct_Deployed != true)
                    oldIndct.Indct_Deployed 
= newIndct.Indct_Deployed;
                
if (newIndct.Indct_IsRecount != true)
                    oldIndct.Indct_IsRecount 
= newIndct.Indct_IsRecount;
                
if (newIndct.Indct_Order != 0)
                    oldIndct.Indct_Order 
= newIndct.Indct_Order;

                session.Update(oldIndct);
                trans.Commit();
            }

            
catch (ADOException e)
            
{
                
if (trans != null) trans.Rollback();
                
throw;
            }

        }

    }

}


DataAccessLayer数据访问层的工厂类:
using System.Reflection;
using System.Configuration;
using Kufolin.Foundation.IDAL;

namespace Kufolin.Foundation.DALFactory
{
    
/// <summary>
    
///  类 编 号: 01
    
///  类 名 称: DataAccess
    
///  内容摘要: 数据访问层中的抽象工厂,通过反射机制生成各种IDAL对象
    
///  完成日期: 2007-12-9 17:37:38
    
///  编码作者: 田长军
    
///  </summary>

    public sealed class DataAccess
    
{   
        
private DataAccess() { }
        
/// <summary>
        
/// 生成IIndctDAL对象
        
/// </summary>
        
/// <returns>IIndctDAL对象</returns>

        public static IIndctDAL CreateIndctDAL()
        
{
            
return (IIndctDAL)Kufolin.DBUtility.ServiceLocator.LocateDALObject("IndctDAL");
        }

    }

}


posted on 2008-01-30 09:41  哭佛林<Kufolin>  阅读(347)  评论(0)    收藏  举报