gpt4 book ai didi

NHibernate 和代码优先

转载 作者:行者123 更新时间:2023-12-02 22:08:44 26 4
gpt4 key购买 nike

您在实际应用中使用SchemaExport和SchemaUpdate吗?最初,您创建模型然后生成架构?有效吗?或者,您仅将其用于测试...

通常,我创建数据库(使用 Visual Studio 数据库项目),然后使用设计器创建映射和持久类或 EF 实体。但现在,我想尝试使用 Fluent NHibernate 进行代码优先的方法。

我研究了 SchemaExport 和 SchemaUpdate 并发现了一些问题。例如,更新不会删除数据库对象,创建非空列(如表存在则可为空),不会在多对多表上生成主键等等。这意味着我必须经常重新创建数据库。但是,数据又如何呢?并且,如何将更改部署到生产数据库等等......

我想知道您是否真的在应用程序中使用代码优先和 SchemaExport(SchemaUpdate) ?也许你可以给我一些建议......

最佳答案

我在生产中使用 SchemaUpdate。它之所以安全,正是因为它从不执行删除列之类的破坏性操作。但是,它并不是更新数据库的全面解决方案。如果您使用它,您仍然需要用脚本来补充它来更新您的架构,以执行删除(如您提到的)、索引、更改列类型、添加表数据等操作。但 SchemaUpdate 对我来说涵盖了 90% 的情况。

我发现的唯一缺点是,随着时间的推移,它似乎偶尔会向我的表添加重复的外键约束。

还有一件事:您应该从构建工具手动运行 SchemaUpdate,而不是您的应用程序本身。授予您的应用程序修改数据库架构的权限不安全!

关于NHibernate 和代码优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4216708/

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