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

Kat*_*ule 3 sql-server asp.net asp.net-mvc entity-framework nuget-package

我被告知要使用Microsoft.SqlServer.TypesDbGeography一个作业项目,我有。作业项目是使用 ASP.NET,并尝试使用数据库来搜索数据库中的内容。(数据库应该来自一个.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:       /sf/ask/922193821/#40166192
    SqlProviderServices.SqlServerTypesAssemblyName = typeof (SqlGeography).Assembly.FullName;

    AreaRegistration.RegisterAllAreas();
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}
    
Run Code Online (Sandbox Code Playgroud)

我看过文档,该死的东西只是说:

Microsoft.SqlServer.Types

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

其中我认为只是意味着这个包使我们能够使用C表达式SQL,但我想一个更好的解释。我不知道做什么DbGeographyDbGeometry做什么。

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

Dav*_*oft 8

我不知道 DbGeography 和 DbGeometry 是做什么的。

这很简单。SQL Server 具有空间类型。.NET 没有。

Microsoft.SqlServer.Types是一个可以添加到 .NET 项目中的库,用于处理 .NET 项目中的 SQL Servergeographygeometry数据类型。如果没有这个库,您只能通过将 SQL Server 空间类型转换为WKT格式的文本来读取和写入它们。

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