【问题标题】:Convert Entity Framework from Database First to Code First将实体框架从数据库优先转换为代码优先
【发布时间】:2014-10-04 22:42:06
【问题描述】:

我正在尝试将现有数据模型从 Database First 转换为 Code First。

背景

当前的解决方案(摆在我面前)使用数据库项目来定义模型。然后将其发布到数据库,然后我们从所述数据库更新 EDMX 模型。

最后,运行几个 T4 模板以从 EDMX 模型以及 DBContext 生成 POCO 类。

我想摆脱这种情况,并完全采用 Code First 迁移方法。

到目前为止我做了什么

  • 我采用了由 T4 模板生成的 POCO 类,并将它们设为项目的一等公民。
  • 然后我从解决方案中删除了 T4 模板
  • 我采用了 T4 模板生成的 DBContext,并将其作为项目的一等公民。
  • 然后我从解决方案中删除了这个 T4 模板
  • 我从包管理器控制台运行“Enable-Migrations”,它创建了我的 Migrations 文件夹

我还更改了连接字符串以使用 System.Data.SqlClient 提供程序。 是:

<add name="MyContext" connectionString="metadata=res://Project.Data/Model.MyModel.csdl|res://Project.Data/Model.MyModel.ssdl|res://Project.Data/Model.MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MY-SERVER;initial catalog=MY-DB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

改为:

<add name="MyContext" connectionString="data source=MY-SERVER;initial catalog=MY-DB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

这是我遇到问题的地方

我现在正在尝试创建初始迁移,传递 -IgnoreChanges 标志以便我得到一个空迁移(鉴于数据库的年龄,我希望未来的迁移基于当前架构,而不是创建一个从头开始迁移)。

当我跑步时:Add-Migration InitialCreate -IgnoreChanges

我得到这个错误:

无法加载指定的元数据资源。

当我跑步时:Add-Migration InitialCreate -IgnoreChanges -ConnectionString "data source=MY-SERVER;initial catalog=MY-DB;Integrated Security=SSPI;" -ConnectionStringProviderName "System.Data.SqlClient"

我收到此错误:

无法使用标准覆盖此上下文的连接 DbConnection,因为原始连接是 EntityConnection。

在这里不知所措。似乎即使我删除了对 EDMX 模型的引用,上下文仍然知道它。我想完全摆脱它并采用纯代码优先。

任何帮助表示赞赏。

【问题讨论】:

  • 您是否考虑使用数据库中的 Code First? msdn.microsoft.com/en-us/data/jj200620.aspx
  • 这是我认为我们必须走的方向。鉴于某些...有趣的表继承使用,我试图避免这种情况(仅将基线模型保留在 db 中,并将迁移作为仅在此之后的更改)。不过我会调查一下。
  • 我现在正在使用它,效果很好。如果数据库不遵循实体框架所期望的约定,您可能会遇到一些麻烦,但有一些方法可以绕过它。我发现我必须手动创建几个 EF 需要处理包含的表。

标签: c# entity-framework asp.net-mvc-5


【解决方案1】:

只需将 InitialCreate.cs 的内容注释掉即可 然后在 PM 中运行

update-database

之后新的迁移将正常工作。

【讨论】:

    猜你喜欢
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多