gpt4 book ai didi

entity-framework - .NET 4.5 Beta DbGeography NotImplementedException

转载 作者:行者123 更新时间:2023-12-04 13:14:33 25 4
gpt4 key购买 nike

我有一台全新的服务器,安装了可再发行的.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,则代码可以正常工作。有什么想法吗?缺什么?

答复的更新

感谢Pawel。您需要安装SQL CLR类型。您可以通过以下链接获取2012年版本:

Microsoft®SQLServer®2012的Microsoft®System CLR类型
http://www.microsoft.com/download/en/details.aspx?id=29065

OPINION

我真的不明白为什么.NET框架依赖于SQL Server。这些类没有什么特别的。我意识到这可能是历史性的事情,其中​​代码最初是由SQL团队编写的,而.NET团队则想重用它。也不很清楚这是否也是基于提供程序的实现。更好的异常(exception)消息可以节省一天的工作。

最佳答案

Entity Framework中的DefaultSpatialServices使用SqlGeography和SqlGeometry类型作为后备类型。这两种类型都位于不属于.NET Framework的Microsoft.SqlServer.Types.dll程序集中。当EF无法找到这些类型时,将引发异常(该异常可能会有所帮助...)。当您安装Visual Studio时,它将在您的计算机上安装localdb(或者您可能已经有一个SqlExpress数据库),这可能是您在正在运行的计算机上获取类型的方式。在仅安装.NET Framework而不安装Sql Server的计算机上,您将没有这些类型。您可以在出现异常的盒子上安装SqlExpress,也可以尝试仅安装类型。我不确定从哪里获取程序集本身,但我认为Sql Server功能包(http://www.microsoft.com/en-us/download/details.aspx?id=27596)可能有它。支持SqlServer 2008和SqlServer 2012中的类型,因此安装哪个版本都无关紧要。

编辑

在EF6中,异常将包含更好的消息,请参见:https://entityframework.codeplex.com/SourceControl/changeset/b3eca2c141c0fb517504f9731dc8ba7a9c5727ee

用于跟踪此错误的工作项:https://entityframework.codeplex.com/workitem/3

关于entity-framework - .NET 4.5 Beta DbGeography NotImplementedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10117008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com