Microsoft.SqlServer.Types是做什么的,它是如何工作的?

时间:2019-01-05 20:10:28

标签: asp.net sql-server asp.net-mvc entity-framework nuget-package

有人告诉我在我的家庭作业项目中将Microsoft.SqlServer.Types用于DbGeography。家庭作业项目使用ASP.NET,并且正在尝试使用数据库对db中的内容进行搜索。 (该数据库应该来自一个.bak文件,但是我不得不将一个.bacpac文件上传到azure中,然后再连接回它,因为.bak文件一直说它已损坏)

这是我被告知放入Global.asax.cs文件中的代码块:

protected void Application_Start()
{
    // For Spatial types, i.e. DbGeography
    SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
    // This next line is a fix that came from:       https://stackoverflow.com/questions/13174197/microsoft-sqlserver-types-version-10-or-higher-could-not-be-found-on-azure/40166192#40166192
    SqlProviderServices.SqlServerTypesAssemblyName = typeof (SqlGeography).Assembly.FullName;

    AreaRegistration.RegisterAllAreas();
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}

我已经看过documentation,但奇怪的是:

  

Microsoft.SqlServer.Types

     

允许您在未安装SQL Server的计算机上使用SQL Server空间类型。允许使用实体框架空间类型(DbGeography和DbGeometry)。

我认为只是意味着该软件包使我们能够将c表达式用于SQL,但我想要一个更好的解释。我不知道DbGeographyDbGeometry的工作。

此外,我想知道这是否适用于基于azure的数据库,而不仅是由.bak文件制成的本地数据库。

1 个答案:

答案 0 :(得分:2)

  

我不知道DbGeography和DbGeometry做什么。

很简单。 SQL Server具有spatial types。 .NET没有。

Microsoft.SqlServer.Types是一个库,您可以将其添加到.NET项目中,以与.NET项目中的SQL Server geographygeometry数据类型一起使用。没有此库,您只能通过将SQL Server空间类型转换为WKT格式的文本来读取和写入SQL Server空间类型。

对于SQL Server支持的大多数其他数据类型,有一个对应的.NET类型可以工作。例如,SQL Server具有int ,. NET具有System.Int32,等等。