gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:10:58 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com