实体框架6在将存储过程添加到数据模型后无法构建

Eri*_*ric 42 entity-framework entity-framework-6

我刚刚下载了实体框架6并创建了一个全新的项目来测试它.我们目前使用EF 5.

添加完所有表和存储过程后,我尝试构建项目但是出现错误:

"System.Data.Objects.ObjectParameter"类型的值无法转换为"System.Data.Entity.Core.Objects.ObjectParameter".

类型'System.Data.Entity.Core.Objects.ObjectResult(Of DataLibrary.MyStoredProc_Result)'的值不能转换为'System.Data.Objects.ObjectResult(Of DataLibrary.MyStoredProc_Result)'.

我无法弄清楚为什么这不会开箱即用

EF 5有这样的问题.

我正在使用VS 2012. .Net 4.5 Vb.net(也试过一个C#项目......同样的问题)

有任何想法吗?

编辑:

答案是为VS 2012安装EF6工具.我不知道我必须这样做,因为我认为在我添加Entity Framework包时安装了它.

Chr*_*uer 96

您可以通过替换来克服此情况:

using System.Data.Objects;
Run Code Online (Sandbox Code Playgroud)

附:

using System.Data.Entity.Core.Objects;
Run Code Online (Sandbox Code Playgroud)

您可能需要更新usingT4模板中的语句,例如Context.tt文件,以便在重新生成时自动生成的文件继续工作.

之前

在此输入图像描述

在此输入图像描述

  • @Doomsknight更新T4模板中的using语句,比如Context.tt文件,因此重新生成继续有效. (13认同)
  • 我假设这是在`MyContext.Context.cs`文件中完成的.此文件是自动生成的,因此如果重新生成代码,将覆盖手动更改. (4认同)
  • 为我工作,我没有安装VS2012的EF工具只做了上面的更改 (2认同)

Lad*_*nka 38

我猜你正在使用VS2012中的EF工具,这些工具仍然绑定到原始的EF发行版(.NET框架的一部分).EF6使用带外分发,它不适用于以前的工具 - 这就是为什么这些类型具有不同的命名空间并且无法从一个转换为另一个的原因.

解决方案应该是为VS2012下载和安装EF6工具,或者使用VS2013,其中应包含工具.