ActiveReocrd是Castle中一ORM框架,它對NHibernate做了進一步的封裝。
1.環境搭建
a.程序集引用 (注意各程序集間版本兼容性)
Castle.ActiveRecord.dll
Castle.DynamicProxy2.dll
Iesi.Connections.dll
NHibernate.dll
Nhibernate.ByteCode.Castle.dll
/*
這一項根據自己需要來選擇不同的延遲加載代理工廠
NHibernate.ByteCode.Castle.dll
NHibernate.ByteCode.LinFu.dll
NHibernate.ByteCode.Spring.dll
*/
b.配置
可以在應用程序配置文件和單獨的配置文件中來進行配置,也可以通過編程方式配置
配置項參考nhibernate hibernate.cfg.xml
在應用程序配置文件中配置
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler,Castle.ActiveRecord"/> </configSections> <activerecord> <config> <add key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver" /> <add key="dialect" value="NHibernate.Dialect.MsSql2005Dialect"/> <add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/> <add key="connection.connection_string" value="server=.;database=study;uid=sa;pwd=sa"/> <add key="show_sql" value="true"/> <add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle" /> </config> </activerecord> </configuration> 加載配置 IConfigurationSource source = ConfigurationManager.GetSection("activerecord") as IConfigurationSource; ActiveRecordStarter.Initialize(Assembly.GetExecutingAssembly(), source);
在xml文件中配置
<?xml version="1.0" encoding="utf-8" ?> <activerecord> <config> <add key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver" /> <add key="dialect" value="NHibernate.Dialect.MsSql2005Dialect"/> <add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/> <add key="connection.connection_string" value="server=.;database=study;uid=sa;pwd=sa"/> <add key="show_sql" value="true"/> <add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle" /> </config> </activerecord>
加載配置
IConfigurationSource source = new XmlConfigurationSource("XMLFile2.xml");
ActiveRecordStarter.Initialize(Assembly.GetExecutingAssembly(), source);
編程方式配置
InPlaceConfigurationSource source = new InPlaceConfigurationSource(); Hashtable properties = new Hashtable(); properties.Add("connection.driver_class", "NHibernate.Driver.SqlClientDriver"); properties.Add("dialect", "NHibernate.Dialect.MsSql2000Dialect"); properties.Add("connection.provider", "NHibernate.Connection.DriverConnectionProvider"); properties.Add("connection.connection_string", "UID=sa;Password=19811218;Initial Catalog=ARDemo;Data Source=."); properties.Add("proxyfactory.factory_class", "NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"); source.Add(typeof(ActiveRecordBase), properties); ActiveRecordStarter.Initialize(Assembly.GetExecutingAssembly(), source);