0

我现在浪费了几天时间试图让 EF 再次工作。据我所知,即使我一直在尝试使用 EF5,我的项目也有一些对 EF4 的引用。

有人可以指出我需要做的任何步骤,以从我的计算机中删除所有与开发相关的 EF4 引用(如果我有使用它的 3rd 方 .net 应用程序,很好 - 我只是不想在我的任何开发中使用它.)

现在,没有任何工作,因为 EF 的 2 个版本似乎正在相互争斗——即使我开始一个新项目也是如此。

另外,如果我只是使用 EF 5,当我想创建一个新的 EF 类时,我会使用“ADO.NET 实体数据模型”还是“EF 5.x DbContext Generator”?我假设第一个作为第二个似乎想要创建一个 tt 文件,而不是一个 edmx 文件,但我想我会检查以防我遗漏了一些明显的东西......

我正在使用 C# 在运行 VS 2012 的 Win 8 系统上进行开发,并且正在编写一个大型桌面 WPF 应用程序(1 个解决方案、大量项目、大量数据。)

FWIW - 我当前非功能解决方案文件夹中的 packages 文件夹有 EntityFramework.5.0.0 所以我知道我已经安装了它,我只需要从它们不断感染我的项目的任何地方消除 EF 4.x 引用。是的,大部分时间都花在寻找可行的答案上——但我发现的所有东西似乎都无法让它发挥作用。

最糟糕的是,在某一时刻,一切都正常工作——然后我试图通过 Nu-Get 重新安装 EF 5 来修复一些问题,从那时起,什么都没有。

谢谢

4

2 回答 2

1

不确定这是否会解决您的问题,但它可能会有所帮助......当您使用 nuget 时,它会操纵您的解决方案:

  • EF nuget 包已添加到解决方案根目录中的 \packages\ 文件夹
  • packages.config为您使用 nuget 的解决方案中的每个项目创建一个文件
  • 在项目文件中添加了引用(*.csproj For c#)

有时您可能需要更改 nuget 所做的工作,因此您可以检查这些区域。在您的情况下,您最好手动删除两个 EF 版本,然后使用 nuget 或任何适合的方法添加 EF5。

听起来您可能已经删除了 EF 包,但没有整理您的 packages.config 和项目文件,因此请先检查那里(您需要在 VS 解决方案关闭时编辑它们)。

您希望删除<package id="EntityFramework"...从每个 packages.config 文件开始的行。

如果您希望从解决方案中完全删除 nuget,则 csproj 文件有一个<itemgroup>with <Content Include="packages.config" />- 删除整个项目组,可能还有我错过的对该文件的其他引用,您也需要删除它们。

否则,如果您只是在删除 EF 内容之后,请查找<itemgroup>具有您参考的内容,并确保不存在不需要的 EF 版本的参考。

我认为这就是您所需要的 - 当您在进行这些更改后在 VS 中重新加载解决方案时,您的引用应该是正确的。

于 2013-06-21T01:04:07.457 回答
0

我已经放弃了。这太浪费时间了。我从头开始了一个新的解决方案,并首先构建了 EF 项目并确保它有效。那行得通。因此,现在我正在系统地引入其他项目,并在进行过程中进行备份,直到我将所有其他项目都重新放入新的解决方案中。

一个大皮塔饼。我真的希望 MS 有一个工具,可以显示项目引用的所有程序集——名称、程序集位置和引用它的模块——这样就可以轻松解决这些问题......

再次感谢你的帮助。

于 2013-06-21T16:23:27.527 回答