Suche…


Konfiguration erforderlich

  1. Installieren Sie die erforderliche Microsoft.SqlServer.Types Assembly. Sie werden standardmäßig nicht installiert und sind hier von Microsoft als "Microsoft® System CLR-Typen für Microsoft® SQL Server® 2012" verfügbar. Beachten Sie, dass für x86 und x64 separate Installationsprogramme vorhanden sind.

  2. installiere Dapper.EntityFramework (oder das Äquivalent mit dem starken Namen); Dies kann über die Benutzeroberfläche der IDE "NuGet-Pakete verwalten ..." oder (in der Package Manager Console) erfolgen:

    install-package Dapper.EntityFramework
    
  3. Fügen Sie die erforderlichen Assembly-Bindungs-Weiterleitungen hinzu. Dies liegt daran, dass Microsoft v11 der Assemblys ausliefert, Entity Framework jedoch nach v10 fragt. Sie können app.config oder web.config unter dem Element <configuration> Folgendes hinzufügen:

    <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. Informieren Sie "dapper" über die neuen verfügbaren Typhandler, indem Sie Folgendes hinzufügen (irgendwo in Ihrem Startup, bevor es versucht, die Datenbank zu verwenden):

    Dapper.EntityFramework.Handlers.Register();
    

Geometrie und Geographie verwenden

Sobald die Typhandler registriert sind, sollte alles automatisch funktionieren, und Sie sollten diese Typen entweder als Parameter oder als Rückgabewerte verwenden können:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow