我正在尝试将现有的数据库模型从Database First转换为Code First。
背景
当前解决方案(在我之前实施)使用数据库项目来定义模型。然后发布到数据库,然后我们从该数据库更新EDMX模型。
最后,运行了一些T4模板,从EDMX模型生成POCO类以及DBContext
。
我想摆脱这种方式,纯粹采用Code First迁移方法。
我所做的事情
- 我已经将由T4模板生成的POCO类拿出来,使它们成为该项目的一等公民。
- 我随后从解决方案中删除了T4模板
- 我取出了由T4模板生成的DBContext,也使其成为该项目的一等公民。
- 我随后从解决方案中删除了这个T4模板
- 从包管理器控制台中,我运行了“Enable-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="data source=MY-SERVER;initial catalog=MY-DB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" 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。
感谢任何帮助。