gpt4 book ai didi

c# - 将 Entity Framework 从数据库优先转换为代码优先

转载 作者:太空狗 更新时间:2023-10-29 18:00:08 25 4
gpt4 key购买 nike

我正在尝试将现有数据模型从数据库优先转换为代码优先。

背景

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

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

我想摆脱这种情况,完全转向代码优先迁移方法。

到目前为止我做了什么

  • 我采用了 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 标志,以便我得到一个空迁移(考虑到数据库的年龄,我希望 future 的迁移基于当前的迁移模式,而不是从头开始创建迁移)。

当我运行时:Add-Migration InitialCreate -IgnoreChanges

我收到这个错误:

Unable to load the specified metadata resource.

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

我收到这个错误:

Can not override the connection for this context with a standard DbConnection because the original connection was an EntityConnection.

这里很迷茫。看起来即使我删除了对 EDMX 模型的引用,上下文仍然知道它。我想完全摆脱它并采用纯代码优先。

感谢任何帮助。

最佳答案

将InitialCreate.cs的内容注释掉即可然后在下午运行

update-database

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

关于c# - 将 Entity Framework 从数据库优先转换为代码优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com