我们正在使用Entity Framework构建此.NET应用程序作为我们的数据库连接器。我知道所有关于根据你的情况选择正确方法的东西,比如“你有一个现有的数据库吗?”,“你更喜欢建模而不是编码”。但经过一些阅读后,我发现,当数据库的升级过程已经投入生产时,并不是唯一可以想到的,这对我们来说非常重要。
因此哪种方法最适合与Entity Framework一起使用。目前我们有一个现有的数据库。我更喜欢使用模型并从中更新数据库,但是我们在列的默认值中缺乏功能,并且模型很难在团队中使用,因此我们需要的是基本上最佳实践。
对于生产用途:数据库优先,模型优先还是代码优先?
答案 0 :(得分:3)
其他人可能会在这里发出声音并告诉您使用代码优先方法进行模型迁移。这可能是一个解决方案,这不是我的偏好。
我们首先使用EF代码管理动态数据库,但如果没有一个非常有益的Visual Studio功能,我将无法做到:SQL Schema Compare。我相信此功能仅适用于该产品的Premium和Ultimate版本。
每次我们的模型更改时,我都会在本地计算机上放置2个数据库模式副本:新版本和当前生产版本。如果使用新版本作为源并将生产版本作为目标运行Schema Compare,它将生成一个SQL脚本,您可以针对生产数据库运行该脚本,以使其架构和数据与更改保持一致。
它生成的SQL经常需要进行一些编辑才能在生产中运行,但它会为你做很多艰苦的工作 - 禁用约束,添加/删除索引,以及将数据从旧表移动到新版本。在更改架构时,它还会警告您潜在的问题。