Ce face Microsoft.SqlServer.Types și cum funcționează? (Programare, Asp.Net, Server Sql, Asp.Net Mvc, Cadru De Entități, Pachet Nuget)

Katelyn Rule a intrebat.

Mi s-a spus să folosesc Microsoft.SqlServer.Types pentru DbGeography într-un proiect pe care îl am ca temă pentru acasă. Proiectul de temă este cu ASP.NET, și încearcă să folosească o bază de date pentru a face o căutare pe lucruri din db. (Baza de date ar trebui să fie de la un .bak dar a trebuit să încarc un fișier .bacpac fișier în azure și apoi să mă conectez înapoi la el, deoarece .bak fișierul continua să spună că este corupt).

Acesta este un bloc de cod pe care mi s-a spus să îl pun în fișierul Global.asax.cs fișier:

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);
}
    

M-am uitat la documentația, , iar chestia aia afurisită spune doar:

Microsoft.SqlServer.Types

Vă permite să utilizați tipurile spațiale SQL Server pe o mașină fără SQL Server instalat. Permite utilizarea tipurilor spațiale Entity Framework (DbGeography și DbGeometry).

Care Cred că înseamnă doar că acest pachet ne permite să folosim expresia c pentru SQL, dar aș dori o explicație mai bună. Nu am nicio idee despre ce DbGeography și DbGeometry fac.

În plus, aș vrea să știu dacă acest lucru se aplică la un db bazat pe azure, și nu doar la un db local realizat dintr-un fișier .bak.

1 răspunsuri
David Browne – Microsoft

Nu am nicio idee despre ce fac DbGeography și DbGeometry.

Este simplu. SQL Server are tipuri spațiale. .NET nu are.

Microsoft.SqlServer.Types este o bibliotecă pe care o puteți adăuga la proiectul dvs. .NET pentru a lucra cu SQL Server geography și geometry tipuri de date în proiectul dvs. .NET. Fără această bibliotecă, puteți citi și scrie doar tipurile spațiale SQL Server prin convertirea lor în text în fișierul WKT în format text.

Pentru majoritatea celorlalte tipuri de date acceptate de SQL Server există un tip .NET corespunzător care funcționează. De exemplu, SQL Server are int .NET are System.Int32, , etc.

Comentarii

  • Adăugând că tipurile spațiale pot fi utilizate în edițiile on-prem SQL Server și Azure. –  > Por Dan Guzman.
  • De asemenea, este necesar pentru returnarea tipului hierarchyid, pe care tocmai l-am descoperit, în caz că ajută pe cineva –  > Por obaylis.