我有一个全新的服务器,我在上面安装了 .NET 4.5 Beta 可再发行组件。尝试使用空间功能时出现 NotImplemented 异常。这段代码...
var x = DbGeography.PointFromText(string.Format("POINT({0} {1})", -45, 45), 4326);
抛出这个异常...
System.NotImplementedException: The method or operation is not implemented.
at System.Data.Spatial.DefaultSpatialServices.GeographyPointFromText(String geographyText, Int32 spatialReferenceSystemId)
如果我安装完整的 VS.NET 11 Beta,那么代码就可以正常工作。任何想法为什么?什么不见了?
更新答案
感谢帕维尔。您需要安装 SQL CLR 类型。您可以在此链接获得 2012 版本:
Microsoft® SQL Server® 2012 的 Microsoft® System CLR 类型 http://www.microsoft.com/download/en/details.aspx?id=29065
观点
我真的不明白为什么 .NET 框架依赖于 SQL Server。这些课程没有什么特别之处。我意识到这可能是一个历史事件,代码最初是由 SQL 团队编写的,而 .NET 团队想要重用它。也不是很清楚这是否是基于提供程序的实现。更好的异常消息可以节省一天的工作。