【发布时间】:2010-11-23 18:39:51
【问题描述】:
我想试用 ActiveRecord,因为它具有出色的会话/事务范围管理和良好的属性映射策略。我通常使用 Nhibernate + Fluent Nhibernate 来构建我的 DAL。
我陷入了这个奇怪的问题:ActiveRecord 不想从位于 GAC 中的程序集中加载我的类型......而 FluentNhibernate 可以。 这是失败的 ActiveRecord 初始化代码:
IDictionary properties = new Dictionary();
properties.Add("connection.driver_class", "NHibernate.Driver.SqlClientDriver");
properties.Add("dialect", "NHibernate.Dialect.MsSql2005Dialect");
properties.Add("connection.provider", "NHibernate.Connection.DriverConnectionProvider");
properties.Add("connection.connection_string", "MY_CONNECTION_STRING");
properties.Add("proxyfactory.factory_class", typeof(NHibernate.ByteCode.Castle.ProxyFactoryFactory).AssemblyQualifiedName);
InPlaceConfigurationSource source = new InPlaceConfigurationSource();
source.Add(typeof(ActiveRecordBase), properties);
ActiveRecordStarter.Initialize( 资源, 类型(人), 类型(汽车) );
包含“Person”和“Car”的程序集在 GAC 中,而 Fluent Nhibernate 可以加载它(即使在惰性集合中), ActiveRecord 无法加载并抛出以下异常:
à NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage)
à NHibernate.Cfg.XmlHbmBinding.Binder.ClassForNameChecked(String name, Mappings mappings, String errorMessage)
à NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindClass(XmlNode node, IDecoratable classMapping, PersistentClass model, IDictionary2 inheritedMetas)
à NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(XmlNode node, HbmClass classSchema, IDictionary2 inheritedMetas)
à NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(XmlNode parentNode, IDictionary`2 inheritedMetas)
à NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(XmlNode node)
à NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc)
持久类 CFM.SearchServices.Finder.DAL.Entities.Person,未找到 CFM.SearchServices.Finder
有什么方法可以强制 ActiveRecord 提供 NHibernate 完全限定名称?
【问题讨论】:
标签: nhibernate activerecord castle-activerecord