I’m struggling with setting up Fluent mappings with NHibernate in a project. With a working project to copy from – I still end up with no mappings and subsequently the exception FluentConfigurationException: An invalid or incomplete configuration was used while creating a SessionFactory. Check PotentialReasons collection, and InnerException for more detail.
No clues in either PotentialReasons or InnerException as I gather though…
I’ve used the suggested method calls from the Fluent documentation and only split them across lines to be able to debug. The call to BuildSessionFactory fails, and no xml files are exported in the previous call.
What am I missing? Any ideas or suggestions? Getting more gray hair by the minute…
All these classes live in the same assembly, in different namespaces.
SessionFactoryCreator class: (part of)
var a = Fluently.Configure();
var cs = MsSqlConfiguration.MsSql2005
.ConnectionString(c => c.FromConnectionStringWithKey("AlarmDataDb"));
var b = a.Database(cs);
var d = b.Mappings(x => x.FluentMappings.AddFromAssemblyOf<Mappings.AlarmData>()
.ExportTo(@"C:\"));
var e = d.BuildSessionFactory();
_sessionFactory = e;
Mapping class:
public class AlarmData : ClassMap<AlarmTemp>
{
public AlarmData()
{
Table("PublishOperationMessage");
Id(s => s.OperationMessageId, "OperationMessageId");
}
}
DTO class:
public class AlarmTemp : Base
{
public virtual int OperationMessageId { get; private set; }
}
EDIT
Stacktrace of the innermost exception (some words are in swedish, but you’ll get it):
vid FluentNHibernate.MappingModel.TypeReference..ctor(Type type)\r\n vid FluentNHibernate.Mapping.IdentityPart.FluentNHibernate.Mapping.Providers.IIdentityMappingProvider.GetIdentityMapping()\r\n vid FluentNHibernate.Mapping.ClassMap1.FluentNHibernate.IMappingProvider.GetClassMapping()\r\n vid FluentNHibernate.PersistenceModel.BuildSeparateMappings(Action1 add)\r\n vid FluentNHibernate.PersistenceModel.BuildMappings()\r\n vid FluentNHibernate.PersistenceModel.EnsureMappingsBuilt()\r\n vid FluentNHibernate.PersistenceModel.WriteMappingsTo(Func2 writerBuilder, Boolean shouldDispose)\r\n vid FluentNHibernate.PersistenceModel.WriteMappingsTo(String folder)\r\n vid FluentNHibernate.Cfg.FluentMappingsContainer.Apply(Configuration cfg)\r\n vid FluentNHibernate.Cfg.MappingConfiguration.Apply(Configuration cfg)\r\n vid FluentNHibernate.Cfg.FluentConfiguration.BuildConfiguration()
Ok, this is so weird. I googled the stacktrace message and ended up on this page:
http://geekswithblogs.net/rupreet/archive/2005/12/21/63740.aspx
So, desperate to do anything, I quit VS, deleted the bin folders, restarted VS and built. Guess what – it works now. 🙂