EDMX .NET 4.5 转换到 4.0?

4
我们正在使用实体框架,当我们的项目设置为构建.NET 4.5时,我们创建了EDMX。现在我们想切换到.NET 4.0,但是当我们这样做时,EDMX文件会出现编译错误。
它显示以下错误:
Error 10027: The XML namespace for the conceptual model's schema element is not supported on this project's target framework version.

除了重新创建EDMX文件之外,还有其他解决方案吗?


我不这么认为。重建EDMX肯定很容易吧? - Greg
1
不知道是否有价值,我将目标框架切换回4.5,重新编译了解决方案,出现了一堆错误,然后又将它切换回4.0,得到了消息:“为新的目标框架成功重建了edmx”,并且能够在没有任何命名空间错误的情况下重新编译。耸肩 - Bauhaus
@Bauhaus,您能否把您的评论变成一个答案呢?它解决了我的问题,我认为它对其他人也可能有用。 - Tjaart
3个回答

4
假设您没有使用.NET Framework 4.5中提供的功能(如枚举、空间类型、具有多个结果集的存储过程),则可以执行以下操作(请务必备份文件):
  • 创建一个新的控制台应用程序,目标为.NET Framework 4.5
  • 将edmx文件添加到项目中
  • 重新定位项目以针对.NET Framework 4(转到项目属性,更改目标框架版本)
这样应该会将您的edmx降级为v2。
另外,您也可以手动更改xml命名空间和版本为v2。您可以在此处找到每个工件版本要使用的命名空间: 编辑 请注意,在EF6/EF6.x中,您可以在.NET Framework 4上使用Edmx v3,因此可以获得之前仅在.NET Framework 4.5上可用的所有好处(如枚举)。

嗨,Pawel。在.NET4和EF6上如何使用edmx v3呢?你不会遇到这个问题中所述的错误吗? - MajorInc
在.NET Framework 4上使用edmx v3是可以的,而且在使用EF6时不应该抛出异常,因为EF6 EF.dll根本不依赖于System.Data.Entity.dll,而是有自己的代码来处理edmx。在EF6之前,edmx由System.Data.Entity.dll处理,它只知道.NET Framework 4中的v2和.NET Framework 4.5中的v3。EF6工具已经重写,内部使用EF6 EF.dll来处理所有操作(即使项目针对EF5),因此当项目使用EF6并针对.NET Framework 4时,它能够处理v3 edmx。一些详细信息请参见:http://bit.ly/1qqJBRD - Pawel
3
对于使用VS 2012的用户,如果想要在edmx v3上保留一个.Net 4项目,则需要单独安装Visual Studio 2012下的Entity Framework 6工具。请注意,不改变原意,使语言更加通俗易懂。 - Jeff

2
注意:如果你想在edmx v3上保留一个.Net 4项目,则需要在VS 2012上安装一个单独的插件。Visual Studio 2012的Entity Framework 6工具。以上是Pawel答案中解决了我的问题的评论。我将其复制到自己的答案中,以便其他人可以找到它。

2

就我所知,我将目标框架切换回4.5,重新编译解决方案,得到一堆错误,然后将其切换回4.0,并收到消息:

"成功为新目标框架重建了edmx"

从那里开始,我能够重新编译而没有任何命名空间错误耸肩


确认一下 - 这也解决了我们遇到的问题,只需切换目标框架即可修复EDMX / .NET Framework不匹配的问题。感谢@Bauhaus! - SliverNinja - MSFT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接