C# 开发编程

C#编程一般针对微软.NET系列(包括.NET Framework 和 .NET Core)工具和Runtime

是否可以使用Linq to Sql的SqlGeography?

我一直在尝试使用Microsoft.SqlServer.Types.SqlGeography遇到很多问题。 我完全知道在Linq to Sql中对此的支持并不是很好。 我尝试了很多方法,从预期的方式开始( geography数据库类型, SqlGeography CLR类型)。 这会产生NotSupportedException ,这是通过博客广泛讨论的。 然后,我将geography列作为varbinary(max) ,因为geography是存储为二进制的UDT。 这似乎工作正常(使用一些二进制读取和写入扩展方法)。 但是,我现在遇到了一个相当模糊的问题,这似乎并没有发生在很多其他人身上。 System.InvalidCastException:无法将类型为“Microsoft.SqlServer.Types.SqlGeography”的对象强制转换为“System.Byte []”。 迭代查询时, ObjectMaterializer会抛出此错误。 它似乎只发生在包含地理列的表隐式包含在查询中时(即使用EntityRef属性进行连接)。 System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext() 我的问题:如果我将geography列检索为varbinary(max) ,我可能会发现反向错误:无法将byte[] SqlGeography为SqlGeography 。 我明白了。 我没有。 我对部分LINQ to SQL类有一些隐藏二进制转换的特性……那可能是问题吗? 任何帮助表示赞赏,我知道可能没有足够的信息。 附加function: Visual Studio dbml Designer中具有“服务器数据类型”= geography生成此错误: The specified type ‘geography’ is not a valid provider type. Visual Studio dbml Designer中没有“服务器数据类型”的geography列会生成此错误: Could not format node ‘Value’ […]