NHibernate SchemaExport和Configure()catch-22
-
06-07-2019 - |
题
我想在新项目中使用 DDD 并首先为我的课程建模,然后根据类库生成数据库模式。我的计划是使用NHibernate hbm2ddl工具 SchemaExport
执行此操作。
问题是我无法使 SchemaExport
工作,因为它让我遇到了一个奇怪的catch-22问题。 SchemaExport
需要配置
对象本身需要有效的NHibernate配置文件以及一组数据库映射。
这里的catch-22是当我执行Configure()时,它会抱怨“无法确定实体'MyEntity'的表名;删除'table'属性或为其赋值。“
所以 Configure()
方法要求表存在,而 SchemaExport
应该是基于我无法创建的 Configuration
创建它,因为该表不存在。
那么,我究竟应该如何创建一个有效的NHibernate Configuration
,其中包含 SchemaExport
所需的映射,以便在没有 Configure()的情况下实际执行一些有用的操作
抛出并抱怨它找不到用 SchemaExport
创建的表?是否有“模式”我可以设置 Configuration
对象,这样它就不会检查数据库中是否存在给定的表,或者我还需要做些什么呢?
解决方案
您可以发布配置文件吗?
我一直使用这种方法,不存在任何表,并且能够动态生成模式。我的猜测是你的.hbm文件中可能有一些东西。尝试将您的架构缩减到1个表格,让它工作,然后从那里构建它。作为参考,这是我用来生成数据库模式的代码:
var cfg = new Configuration();
cfg.Configure();
var schema = new SchemaExport(cfg);
schema.Create(true, true);
这也会将脚本推送到控制台,这样您就可以看到针对数据库生成了什么SQL。
不隶属于 StackOverflow