【问题标题】:ASP.Net MVC 3 with EF 4.1: Is it possible to switch from database first to code first带有 EF 4.1 的 ASP.Net MVC 3:是否可以从数据库优先切换到代码优先
【发布时间】:2011-09-02 17:28:59
【问题描述】:

Net MVC 3 网络应用程序。我使用"database first" 从现有数据库中生成了我的模型。但现在,我更愿意使用“code first”范式。这有可能吗?如何告诉我的解决方案我希望它为我编写的新模型创建表?

【问题讨论】:

  • 我没有检查它是否可能,但也许这个链接会帮助你:stackoverflow.com/questions/5446316/…
  • 您知道将首先删除所有表,以便更新数据库以匹配当前版本的 EF 4.1 中的模型。目前尚无法使用 Code First 创建新表或更新当前表。
  • 另一个选项是告诉模型的代码生成器使用 DbContext 生成器。这为您提供了更接近代码首先提供给您的类,并且您只需要在更改数据库时打开模型。如前所述,您现在无法使用 CF 更新架构,对于现有数据库,这是一种更简单的方法。
  • 如果您的主要目标是能够使用 Code First API 而不是首先使用模型生成数据库,您可以使用 Entity Framework Power Tools 继续使用数据库优先工作流。见visualstudiogallery.msdn.microsoft.com/…
  • @tdykstra 我的主要目标是能够更新远程开发服务器上的数据库结构,我有 FTP 访问权限但没有 SQL 访问权限。服务器不接受与 SQL Server 的远程连接。但感谢您的链接。即使它不是我想要的,它仍然很有趣。

标签: asp.net-mvc-3 entity-framework-4.1 ef-code-first ef-database-first


【解决方案1】:

是的,但请注意,如果您的数据库不存在,则会发生这种情况。

http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx

  1. 添加从 DbContext 继承的上下文类 声明您的 DbSet 客户 {get;set;}
  2. 将连接字符串添加到 sdf 文件中。

请注意有关创建数据库的重要部分: “如果您的连接字符串指向磁盘上尚不存在的 SQL CE 或 SQL Express 数据库文件,则默认情况下会发生这种情况。您不需要采取任何手动步骤来实现这一点。”

因此,以这种方式添加到现有数据库 - 不会发生。

【讨论】:

  • 事实上,我希望能够以这种方式修改现有数据库。
猜你喜欢
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 2014-01-06
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多