我在我的应用程序中使用EF空间数据类型DbGeometry和DbGeography。现在我尝试从EF5升级到EF6。项目编译(在我将所有System.Data.Entity参考文件交换到新的EF6之后),但在运行时,当我尝试访问DbGeometry.IsEmpty时,我得到NotImplemetedException。从我发现的重构程序集中,IsEmpty调用私有字段spatialProvider,它有两个实现 - DefaultProvider和SqlServerProvider。默认值抛出异常。那么如何指示EF使用SqlServer呢?
我的架构有几个词:服务器通过EF与DB通信。在服务器上它似乎工作正常,这是我有EDMX并创建所有EF的东西。它比通过WCF向客户端发送DTO,这个DTO具有DbGeometry属性。比客户端(WPF)我在这个DTO属性和...异常上调用IsEmpty。在客户端上是否有一些配置或者某些,我没有任何EF模式等,只是对EntityFaramework 6空间类型DLL的引用。
PS:我也在客户端加载非托管SQLTypes程序集。
答案 0 :(得分:0)
好的,一旦你形容它,你最终会得到答案。如果smb会遇到同样的问题:对于像IsEmpty这样的方法来运行(即使用SqlServer实现,而不是默认的),应该将EntityFramefork NuGet包添加到项目中。它不仅添加了EntityFramework.dll的引用,还添加了EntityFramework.SqlServer.dll。
当我在升级期间更改名称空间时,我只是在ReSharper中单击添加引用,它自动添加了对EntityFramework.dll的引用。