3

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

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

这里的第 22 条问题是,当我执行 Configure() 时,它会抱怨"Could not determine the name of the table for entity 'MyEntity'; remove the 'table' attribute or assign a value to it."所以该Configure()方法需要表存在,而SchemaExport应该根据Configuration我无法创建的表来创建它,因为表不存在不存在。

那么,我到底应该如何创建一个有效的 NHibernate ,其中包含实际做一些有用的事情Configuration所需的映射,而不会抛出并抱怨它找不到要创建的表?是否有一个“模式”我可以设置对象,这样它就不会检查数据库是否存在给定的表,还是我需要做其他事情?SchemaExportConfigure()SchemaExportConfiguration

4

1 回答 1

9

你可以发布你的配置文件吗?

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

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

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

于 2009-06-21T01:01:29.180 回答