.net NHibernate模式导出和配置()catch-22

.net NHibernate模式导出和配置()catch-22,.net,nhibernate,hbm2ddl,schemaexport,.net,Nhibernate,Hbm2ddl,Schemaexport,我想在一个新项目中使用,首先对我的类建模,然后根据类库生成数据库模式。我的计划是使用NHibernate hbm2ddl工具SchemaExport实现这一点 问题是我无法让SchemaExport工作,因为它给我带来了一个奇怪的第22条军规问题。SchemaExport需要一个Configuration对象,该对象本身需要一个有效的NHibernate配置文件以及一组数据库映射 这里的问题是,当我执行Configure()时,它抱怨“无法确定实体'MyEntity'的表名;删除'table'属

我想在一个新项目中使用,首先对我的类建模,然后根据类库生成数据库模式。我的计划是使用NHibernate hbm2ddl工具
SchemaExport
实现这一点

问题是我无法让
SchemaExport
工作,因为它给我带来了一个奇怪的第22条军规问题。
SchemaExport
需要一个
Configuration
对象,该对象本身需要一个有效的NHibernate配置文件以及一组数据库映射

这里的问题是,当我执行Configure()时,它抱怨
“无法确定实体'MyEntity'的表名;删除'table'属性或为其赋值。”
因此
Configure()
方法要求表存在,而
SchemaExport
应该基于
配置创建它,我无法创建该配置,因为该表不存在


那么,我究竟应该如何创建一个有效的NHibernate
配置
,其中包含
SchemaExport
实际执行有用操作所需的映射,而不必抛出
Configure()
并抱怨它找不到使用
SchemaExport
创建的表呢?是否有一个“模式”可以设置
配置
对象,这样它就不会检查数据库中是否存在给定的表,或者是否有其他需要执行的操作?

您可以发布配置文件吗

我在没有表的情况下一直使用这种方法,并且能够动态地生成模式。我猜你的一个.hbm文件可能有问题。尝试将您的模式缩减为一个表,让它工作,然后从那里开始构建它。作为参考,以下是我用来生成db模式的代码:

    var cfg = new Configuration();
    cfg.Configure();
    var schema = new SchemaExport(cfg);
    schema.Create(true, true);

这还将为您将脚本推送到控制台,以便您可以查看针对db生成的SQL。

谢谢您的提示。由于我自己并不编写HBM,而是由Fluent NHibernate动态生成它,因此我没有注意到“GetTableName”约定中存在错误,导致生成的HBM中的“table”属性设置为空字符串。得到生成的HBM文件使问题变得非常清楚,我能够在几秒钟内解决它。耶!:)