好的,我有一个数据库,但里面没有表。我有一些实体类。我正在尝试设置 Fluent NH 以使用自动模式导出进行自动映射。
首先,这是可能的,对吧?
其次,如果是这样,我在这里做错了什么:
private ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(c => c.Is(@"Data Source=foo;Initial Catalog=bar;Integrated Security=True")))
.Mappings(m => m.AutoMappings.Add(AutoPersistenceModel.MapEntitiesFromAssemblyOf<Employee>()
.Where(t => t.Namespace.Contains("Entities"))))
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
private void BuildSchema(Configuration cfg)
{
new SchemaExport(cfg).Create(false, true);
}
我在上面的“.Where”行收到错误“对象引用未设置到对象的实例”。如果我取出 .Where 条件,我会收到错误消息“无法对 ContainsGenericParameters 为真的类型或方法执行后期绑定(bind)操作。”
编辑:
一些附加信息:我更改了 .Where 语句以具体概述要包含的实体。 IE。 “.Where(t => t.Name.Contains("Employee")”等。当我这样做时,我收到有关缺少依赖项 (NHibernate.ByteCode.CaSTLe) 的错误。当我解决这个问题时,它工作正常.我仍然不明白为什么这行得通。
最佳答案
我相信 NHibernate.ByteCode.CaSTLe 程序集用于在 NHibernate 中创建代理类。
我猜想当您尝试创建架构或配置时,需要引用代理生成器。这就是为什么添加允许的引用可以解决您的问题。
您可以在这里阅读一些关于 NHibernate 代理的信息:http://nhforge.org/blogs/nhibernate/archive/2008/11/09/nh2-1-0-bytecode-providers.aspx
关于c# - Fluent NHibernate - 自动架构构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1215604/