.net - NHibernate SchemaExport 和 Configure() catch-22

标签 .net nhibernate hbm2ddl schemaexport

我想使用 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/

相关文章:

作为参数传递给 onclick() 的 C# 变量未定义

C# LINQ 创建月份和年份列表

java - hbm2ddl : on delete set null issue

c# - QueryOver 中的选择列表

基于 NHibernate 的全文搜索

java - 限制 Hibernate 不识别 DDL 生成上的验证注释

mysql - hbm2ddl - 如何避免 Hibernate 创建外键约束?

.net - 取消数据库查询困境

c# - 在 .net 中循环遍历 xml

c# - nhibernate命名查询,找不到名称