【问题标题】:ORM Code First versa Database First in Production生产环境中的 ORM 代码优先和数据库优先
【发布时间】:2015-06-08 08:29:49
【问题描述】:


自 1985 年以来我一直在使用 SQL,因此对数据库服务器非常熟悉。
我认为 (C#) Code First 是另一种时尚,它来了又去。它似乎适合没有 DBA 背景的人。同样,如果使用 Code First 并且您不知道要连接到什么 DB,例如,稍后可能是 Mongo,这也是一个有用的抽象。 Code First 不会让自己进入数据库图,因此您可以看到发生了什么。
我想知道您如何首先使用代码将更改推广到生产 SQL 服务器,与使用 ALTER TABLE 命令不同,您不想删除和重新创建数据库。我使用了 Red-Gate 的工具,这些工具使 DB 代码促销变得容易。 那么为什么要编码优先呢? 您如何将数据库更改转移到生产环境中?

【问题讨论】:

  • 您使用迁移脚本? EF 在其tutorials 中对此进行了介绍。 What have you tried?
  • 好像是迁移脚本。如果没有重大更改,则可以运行“更新数据库”。发现一大堆你在 CodeFirst 中做不到的事情。更不用说使用 EXEC sp_addextendedproperty N'MS_Description' 为 DBA 设置 GetDaate() 或 NewID() 或文档之类的东西了,似乎您认为 DB 是垃圾场,反之亦然。但我猜它是一个抽象。

标签: c# sql-server entity-framework mongodb ef-code-first


【解决方案1】:

当您对应用程序进行原型设计并且一开始“不太关心”“持久层”时,代码优先方法非常适合。它有助于在事情还没有明确定义的时候快速获得结果,因为您始终可以非常轻松地删除并重新创建您的未开发项目的数据库。

不幸的是,大多数提供这种方法的工具并不能真正帮助从“新建项目模式”过渡到更长期的“遗留项目模式”,在这种模式下,数据库迁移是基本的。事实上,“客户端模型优先”的方式不仅难以实现数据库迁移,更重要的是,数据库模型设计不好的可能性非常高。

开发人员为快速获胜付出了高昂的代价 - 一如既往。这确实不是一个好主意,许多习惯使用遗留系统的经验丰富的开发人员确实同意您的观点:首先使用数据库,并从中派生您的客户端(例如 ORM)模型。

I have written about this topic here, including the advantage of using client model source code generation.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多