📄 nhibernatedataaccessorcreator.cs
字号:
#region Copyright & License
//
// $Copyright:$
//
#endregion
#region Document Information
// $Author: Bai.shijun $
// $Rev: 511 $
// $Date: 05-10-08 16:12 $
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using NHibernate;
using NHibernate.Cfg;
using Eai.Data;
namespace Eai.Data
{
public class NHibernateDataAccessorCreator : DataAccessorCreatorBase
{
private const string FlushModePropertyName = "flush-mode";
private Eai.Data.FlushMode flushMode = Eai.Data.FlushMode.Auto;
public NHibernateDataAccessorCreator()
{
}
public NHibernateDataAccessorCreator(IDataAccessorCreatorConfig config)
{
Config = config;
}
public override IDataAccessorCreatorConfig Config
{
get
{
return base.Config;
}
set
{
base.Config = value;
LoadConfig();
}
}
#region IDataAccessorCreator Members
public override IDataAccessor Create()
{
return new NHibernateDataAccessor(NhConfiguration, flushMode);
}
#endregion
private NHibernate.Cfg.Configuration nhConfig;
private NHibernate.Cfg.Configuration NhConfiguration
{
get
{
return nhConfig;
}
}
private void LoadConfig()
{
nhConfig = new NHibernate.Cfg.Configuration();
AddProperty(nhConfig);
// add mapping configuration.
AddMappingConfig(nhConfig);
if (Config.Properties.ContainsKey(FlushModePropertyName))
{
string flushModeStr = Config.Properties[FlushModePropertyName].ToLower();
try
{
flushMode = (Eai.Data.FlushMode)Enum.Parse(typeof(Eai.Data.FlushMode), flushModeStr, true);
}
catch { }
}
}
/// <summary>
/// add mapping configuration.
/// </summary>
private void AddMappingConfig(NHibernate.Cfg.Configuration nhConfig)
{
XmlNodeList nodes = Config.ConfigNode.SelectNodes("nhMappingConfig/*");
foreach (XmlNode node in nodes)
{
XmlElement ele = node as XmlElement;
if (ele == null) continue;
if (ele.Name == "assembly")
{
string assemblyName = ele.GetAttribute("name");
if (assemblyName == "") continue;
nhConfig.AddAssembly(assemblyName);
}
}
}
private void AddProperty(NHibernate.Cfg.Configuration nhConfig)
{
foreach (KeyValuePair<string, string> item in Config.Properties )
{
string key = item.Key;
if (!key.StartsWith("hibernate", StringComparison.OrdinalIgnoreCase)) continue;
nhConfig.Properties.Add(key, item.Value);
}
}
#region only for test
#if DEBUG
public bool ClassMappingIsExisted(Type classType)
{
return NhConfiguration.GetClassMapping(classType) != null;
}
#endif
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -