Я пытаюсь бегло настроить SessionFactory для доступа к базе данных Oracle9i, с помощью ODP.Net, и я получаю этот MissingConstructorException. У меня есть фактические быстрые отображения, в которых разбираются хорошо, но я не уверен, чем еще случается так, что я сделал неправильно.
Вот исключение:
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();
}
Если кто-либо может указать, где я иду не так, как надо, я был бы крайне признательным.
Как указал Джеймс Грегори в своем комментарии к моему вопросу, я поступил очень глупо, сообщив Fluent, что у меня есть сопоставления.
Когда код выполнялся из контекста модульного теста, m => m.FluentMappings.AddFromAssembly(Assembly.GetCallingAssembly())
пытался сказать Fluent искать маппинги в сборке модульного теста - что привело к неудаче.
Ответ заключается в использовании m => m.FluentMappings.AddFromAssemblyOf
, где Foo - это тип в сборке, где находятся маппинги.