首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用代码优先实体框架向非EF应用程序使用的大型现有数据库添加新表

使用代码优先实体框架向非EF应用程序使用的大型现有数据库添加新表
EN

Stack Overflow用户
提问于 2016-07-14 08:55:01
回答 1查看 713关注 0票数 0

我正在编写一个小应用程序,它需要将6个新表添加到一个大型数据库(~100个表)。我的应用程序对任何现有的表或DB结构都不感兴趣,实际上,我的新表很可能都在一个新的模式中。

其他人将编写存储过程来访问我的新表,因此如果没有DDL引用,我就不会看到他们很高兴。我是EF的新手,但是由于这些表有很多字段,所以避免手动创建DDL似乎是一个不错的选择。

这里最好的选择是什么?我想知道我是否应该使用EF,但只是作为使用注释的DDL的一种方式吗?我是EF的新手,所以如果你开始谈论移民等等,请假设你所知甚少!

EN

回答 1

Stack Overflow用户

发布于 2016-07-14 13:40:53

好的,使用迁移:)

迁移在db上保存了一个"state“表(__Migrations) (带有模型的副本,但现在不用担心)。它使用它来比较“当前”应用程序模型和“数据库”实现(它忽略了不属于代码的任何表)。

一旦使用了迁移,就有了一些好东西:

  1. 您可以获得初始模型的SQL。
  2. 当您添加/删除/修改表及其SQL时,您将得到“方案”升级。
  3. 您还可以让SQL从修改"x“移到修改"y”。

当你一开始不知道它的时候,它是有点沮丧,但你学会了如何在短时间内使用它。

建议:

  • 保持您的DAL在一个单独的公关
  • 从“包”控制台添加迁移 启用-移动-Project MyDALProjectName
  • 内插添加初始迁移 添加-迁移初始-Project MyDALProjectName“
  • 为了好玩而获取脚本(注意脚本参数) 更新-数据库-Project MyDALProjectName -Script“ 注意__Migrations上的插入是必需的。
  • 应用初始迁移"Update-Database -Project MyDALProjectName",这与对数据库运行脚本相同。

从这里开始,当您对模型进行更改时,始终按如下方式执行(在此之前,您的应用程序将拒绝运行):

  • 外接迁移MigrationNameWithDetailsOnWhatYoDid -Project MyDALProjectName
  • 更新-数据库-Project MyDALProjectName
  • 更新生产数据库:更新-数据库-Project MyDALProjectName -SourceMigration TheMigrationIWantToApplyFrom -TargetMigrations ToMigrationNameUssuallyLatestOne -Script

一些附带说明:

  • __Migrations表有一个“修改”键列表,对吗?您可以在这里检查数据库的最后一次应用迁移。
  • 项目中的"Migrations“文件夹有一个与表匹配的类列表。它们有生成更改的c#代码。
  • 您可以在" migrations“文件夹中重置迁移,删除表类和迁移类。在生产中要小心一次。
  • 你可以恢复迁移,我只需要当你面临问题时.

这些都是重要的提示,将帮助你向前迈进。

检查http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38369725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档