Zoeken…


Configuratie vereist

  1. installeer de vereiste Microsoft.SqlServer.Types assemblage; ze worden niet standaard geïnstalleerd en zijn hier bij Microsoft verkrijgbaar als "Microsoft® Systeem CLR-typen voor Microsoft® SQL Server® 2012" - houd er rekening mee dat er afzonderlijke installatieprogramma's voor x86 en x64 zijn.

  2. installeer Dapper.EntityFramework (of het sterk benoemde equivalent); dit kan worden gedaan via de IDE's "NuGet-pakketten beheren ..." UI, of (in de Package Manager Console):

    install-package Dapper.EntityFramework
    
  3. voeg de vereiste assemblage bindende omleidingen toe; dit komt omdat Microsoft v11 van de assemblies levert, maar Entity Framework vraagt om v10; u kunt het volgende toevoegen aan app.config of web.config onder het element <configuration> :

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="Microsoft.SqlServer.Types" 
              publicKeyToken="89845dcd8080cc91" />
          <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    
  4. vertel "dapper" over de beschikbare nieuwe type handlers, door toe te voegen (ergens in uw startup, voordat het probeert de database te gebruiken):

    Dapper.EntityFramework.Handlers.Register();
    

Geometrie en geografie gebruiken

Zodra de typehandlers zijn geregistreerd, zou alles automatisch moeten werken en zou u deze types als parameters of retourwaarden moeten kunnen gebruiken:

string redmond = "POINT (122.1215 47.6740)";
DbGeography point = DbGeography.PointFromText(redmond,
    DbGeography.DefaultCoordinateSystemId);
DbGeography orig = point.Buffer(20); // create a circle around a point


var fromDb = connection.QuerySingle<DbGeography>(
  "declare @geos table(geo geography); insert @geos(geo) values(@val); select * from @geos",
  new { val = orig });

Console.WriteLine($"Original area: {orig.Area}");
Console.WriteLine($"From DB area: {fromDb.Area}");


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow