DbGeometry.IsEmpty在升级后触发notimplemtedexception
本文关键字:notimplemtedexception IsEmpty DbGeometry | 更新日期: 2023-09-27 18:11:04
我在我的应用程序中使用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模式等,只是对entityframework 6空间类型DLL的参考。
PS:我也在客户端加载非托管SQLTypes程序集。
好的,一旦你描述了它,你最终会得到答案。以防smb遇到同样的问题:对于像IsEmpty这样的方法正常工作(即使用SqlServer实现,而不是默认的),应该在项目中添加EntityFramefork NuGet包。它不仅添加了对EntityFramework.dll的引用,还添加了对EntityFramework.SqlServer.dll的引用。
当我在升级期间改变我的命名空间时,我只是在ReSharper中点击了添加引用,它只会自动添加对EntityFramework.dll的引用。