我想使用 DDD在一个新项目中首先对我的类进行建模,然后根据类库生成数据库模式。我的计划是使用 NHibernate hbm2ddl 工具 SchemaExport
来做到这一点。
问题是我无法让 SchemaExport
工作,因为它让我陷入了一个奇怪的 catch-22 问题。SchemaExport
需要一个 Configuration
对象本身需要一个有效的 NHibernate 配置文件以及一组数据库映射。
这里的 catch-22 是,当我执行 Configure() 时,它会提示 “无法确定实体 'MyEntity' 的表名;删除 'table' 属性或为其赋值."
所以 Configure()
方法要求表存在,而 SchemaExport
应该基于 Configuration
创建它> 我无法创建,因为该表不存在。
那么,我到底应该如何创建一个有效的 NHibernate Configuration
包含 SchemaExport
所需的映射,以便在没有 Configure() 的情况下实际做一些有用的事情
抛出并提示找不到要使用 SchemaExport
创建的表?是否有一个“模式”我可以设置 Configuration
对象,这样它就不会检查数据库是否存在给定的表,或者我需要做些什么吗?
最佳答案
你能发布你的配置文件吗?
我一直使用这种方法,没有表,并且能够即时生成架构。我的猜测是您的 .hbm 文件之一可能有问题。尝试将您的架构缩减为 1 个表,让它工作,然后从那里构建它。作为引用,这里是我用来生成 db 架构的代码:
var cfg = new Configuration();
cfg.Configure();
var schema = new SchemaExport(cfg);
schema.Create(true, true);
这还将为您将脚本推送到控制台,因此您可以查看针对数据库生成的 SQL。
关于.net - NHibernate SchemaExport 和 Configure() catch-22,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1022894/