如果这是一个天真的问题,首次使用NHibernate/Fluent摇摆它,所以提前道歉。我有一套我想要映射的模型。当我创建会话工厂时,我试图一次完成所有映射。我没有使用自动映射(尽管如果我正在尝试做的事情最终会变得比它应该更痛苦)。我遇到的问题是,似乎只有顶级地图正在采取。给定下面的代码片段并运行一个试图保存'bar'的单元测试,它会失败并检查我看到的日志NHibernate试图将一个bar实体保存到foo表中。虽然我怀疑这是我的映射,但它可能是我简单忽略的其他东西。创建会话工厂如何使用FluentHibernate配置多个映射?
代码(注意我也试过单独调用到.Mappings):
Fluently.Configure().Database(MsSqlConfiguration.MsSql2008
.ConnectionString(c => c
.Server(@"localhost\SQLEXPRESS")
.Database("foo")
.Username("foo")
.Password("foo")))
.Mappings(m =>
{
m.FluentMappings.AddFromAssemblyOf<FooMap>()
.Conventions.Add(FluentNHibernate.Conventions.Helpers
.Table.Is(x => "foos"));
m.FluentMappings.AddFromAssemblyOf<BarMap>()
.Conventions.Add(FluentNHibernate.Conventions.Helpers
.Table.Is(x => "bars"));
})
.BuildSessionFactory();
单元测试代码片段:
using (var session = Data.SessionHelper.SessionFactory.OpenSession()) {
var bar = new Bar();
session.Save(bar);
Assert.NotNull(bar.Id);
}
我想尽可能多,谢谢,这有助于。 – 2010-03-25 18:07:05