8

我最近将使用实体框架的 WFC 项目从 v4.3.1 升级到 5.0。
我只运行编码迁移(没有自动迁移)。

以前,我使用发布配置文件来部署此解决方案并应用迁移。由于将项目升级到 EF5,迁移部分不再起作用,并且发布对话框未检测到上下文具有代码优先迁移。

具体来说,该.pubxml文件从检测我的上下文<Object Type="DbCodeFirst"><Object type="DbDacFx">哪个不适合我的上下文发生了变化。

作为一种解决方法,我已将<entityFramework>数据库初始化程序配置手动添加到我的 web.config 转换中,但我想了解为什么发布配置文件不起作用。那是一个更好的解决方案。

4

4 回答 4

2

当合并另一个开发人员的提交并触发 Visual Studio 项目重新加载时,它曾经发生在我身上。这就是它导致“DbCodeFirst”到“DbDacFx”变化的原因。

如果我重新启动 Visual Studio,那么一切都会恢复到应有的状态。

只是另一个想法。

于 2016-03-12T08:02:24.257 回答
0

您可能错过了将 EntityFramework 的引用添加到您的项目中。通过添加引用,您应该能够控制 DbCodeFirst 选项是否可用。

于 2013-01-11T06:52:21.323 回答
0

正如这篇文章所建议的那样,尝试使用 DbContext 的完全限定名称作为连接字符串的名称。代替:

网页配置

<connectionStrings> <add name="MyContext" .../> </connectionStrings>

利用:

网页配置

<connectionStrings> <add name="MyNamespace.AnotherNamespace.MyContext" .../> </connectionStrings>

就我而言,为了使用我现有的发布配置文件 (.pubxml),我还必须手动编辑<ObjectGroup Name="..." ...>. 可能重新创建发布配置文件也可以。

于 2013-05-17T18:19:18.380 回答
0

我有同样的问题,但不是在相同的背景下。

我一直在使用 EF 6.1.3 的现有 ASP.NET MVC 5.2.3 应用程序使用 Code First 迁移一个月,没有出现任何问题。在某个时间点,我添加了对 Windows Azure 存储的支持,但我犯了一些错误:

  • 我添加了一个新项目。不幸的是,我选择了“控制台应用程序”而不是“类库”。我试图通过在“项目设置”中将其更改回“类库”来修复它
  • 我使用 Nuget,Install-Package WindowsAzure.Storage但我将它安装在 MVC 项目上而不是类库上。我尝试通过Uninstall-Package在 MVC 项目上执行并将其安装到正确的项目来修复它
  • 我将类库中的类称为“WorkOrderStorage”
  • 我将 connectionString 添加到<connectionStrings>web.config 中的元素和 web.release.config 中的转换

我想我的项目现在处于不一致的状态。我注意到它会忘记 Code First 迁移(我监视了对 .pubxml 文件的更改):

  1. 当我在 MVC 项目和包含 WorkOrderStorage 类的库之间进行引用时
  2. 当我在现有库之一中创建一个空的“WorkOrderStorage”类时

最后,我通过从头开始正确地重新创建这个库作为类库来修复它(因为观察 1)。我还将类命名为 WorkOrderRepository(因为观察 2)。

于 2015-09-13T20:43:30.710 回答