实体框架代码首先适用于这种情况吗?

时间:2011-10-11 12:30:18

标签: entity-framework entity-framework-4.1 ef-code-first

我对Entity Framework 4.1 Code First有一些基本知识,但尚未在生产应用程序中使用它。我处于Web应用程序的架构阶段,并且除了将使用实体框架之外,没有对DAL做出任何坚定的承诺。我还没有确定哪种EF方法:模型优先,数据库优先或代码优先。我想知道Code First或其他两个适合这种情况的方式。 3种方法中哪一种最有效?

以下是该方案:

  • 开发人员在生产数据库服务器上没有DBO权限。这意味着开发人员无法直接在服务器上运行自己的DDL / DML命令或脚本。相反,DBA必须执行DDL / DML命令。
  • 即使在数据库出现后,模型也会随着时间的推移而发生变化。这意味着如果使用Code First,则必须删除数据库。据我所知,Code First没有办法解决这个问题,并且我没有开箱即用的方法,使用Code First框架来维护重新建模和删除的数据。在数据库优先或模型优先的情况下是否会删除数据库?

如果你有像我这样的类似情况的经验,那将会很棒。

1 个答案:

答案 0 :(得分:2)

第1点可以解决:开发人员写脚本,开发人员给DBA脚本,DBA运行脚本:)

第2点:

您无需在Code-First中删除数据库。生产中通常的方法是关闭数据库初始化程序(它们主要仅用于开发阶段):

Database.SetInitializer<MyContext>(null);

这样您的应用程序就不会在运行时触及数据库模式。如果您的模型不再与数据库模式匹配,您将获得异常。要迁移到新架构,您必须手动或通过脚本(将其提供给DBA)更改架构以匹配模型中的更改。

对于Database-First方法,您必须执行相同操作。对于Model-First,我相信,因为默认情况下Model-First创建的脚本从删除现有数据库开始。无方法为您创建仅更新现有数据库模式的更改脚本。他们总是从头开始创建架构。

所以,在我看来,你提到的观点不是决定赞成或反对Code-First的理由。