1
我想流利地配置一个SessionFactory访问Oracle9i数据库,使用ODP.Net,我得到这个MissingConstructorException。我已经把流畅的映射整理出来了,但我不确定我做错了什么。FluentNHibernate.MissingConstructorException构建SessionFactory时
这里是个例外:
BasicConnectionTests.AssertThatWeCanConnectToADatabase :
FailedFluentNHibernate.MissingConstructorException: 'FluentNHibernate.Automapping.IAutoClasslike, FluentNHibernate, Version=1.1.0.685, Culture=neutral, PublicKeyToken=8aa435e3cb308880' is missing a parameterless constructor.
at FluentNHibernate.Utils.Extensions.InstantiateUsingParameterlessConstructor(Type type)
at FluentNHibernate.PersistenceModel.Add(Type type)
at FluentNHibernate.Utils.CollectionExtensions.Each<T>(IEnumerable`1 enumerable, Action`1 each)
at FluentNHibernate.PersistenceModel.AddMappingsFromSource(ITypeSource source)
at FluentNHibernate.Cfg.FluentMappingsContainer.Apply(Configuration cfg)
at FluentNHibernate.Cfg.MappingConfiguration.Apply(Configuration cfg)
at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration()
FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
at FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration()
at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()
FluentNHibernate.Cfg.FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
at FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()
at MyAwesomeApp.sessionFactories.Oracle9SessionFactoryWrapper.Configure(String userName, String passWord, String dataBase) in Oracle9SessionFactoryWrapper.cs: line 26
at MyAwesomeApp.Tests.oracle.BasicConnectionTests.AssertThatWeCanConnectToADatabase() in BasicConnectionTests.cs: line 17
下面是一口流利的映射:
public ISessionFactory Configure(string userName, string passWord, string dataBase)
{
var config = Fluently.Configure();
config.Database(
OracleDataClientConfiguration.Oracle9
.ConnectionString(cs => cs.Username(userName).Password(passWord).Instance(dataBase))
.Driver("NHibernate.Driver.OracleDataClientDriver")
#if DEBUG
.ShowSql()
#endif
);
config.Mappings(
m => m.FluentMappings.AddFromAssembly(Assembly.GetCallingAssembly()));
return config.BuildSessionFactory();
}
如果有人能指出我要去哪里错了,我将感激不尽。
'Assembly.GetCallingAssembly()'返回什么程序集?它看起来像是'FluentNHibernate.dll'。 – 2010-07-12 11:15:31
没关系 - 我是个笨蛋,不应该被允许做这种事情。很明显,我应该使用AddFromAssemblyOf(),很明显,当您在单元测试中运行代码时,Assembly.GetCallingAssembly()并不是非常有用。 感谢指出(应该是什么)的盲目明显:) –
2010-07-12 13:14:02