Recherche…


Configuration requise

  1. installez l'assembly Microsoft.SqlServer.Types requis; ils ne sont pas installés par défaut et sont disponibles auprès de Microsoft ici en tant que "Types de CLR Microsoft® System pour Microsoft® SQL Server® 2012" - notez qu'il existe des programmes d'installation distincts pour x86 et x64.

  2. installez Dapper.EntityFramework (ou son équivalent nommé fort); Cela peut se faire via l'interface utilisateur "Manage NuGet Packages ..." de l'EDI ou (dans la console du gestionnaire de packages):

    install-package Dapper.EntityFramework
    
  3. ajouter les redirections de liaison d'assembly requises; En effet, Microsoft est livré avec les assemblys v11, mais Entity Framework demande la version 10; Vous pouvez ajouter ce qui suit à app.config ou web.config sous l'élément <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. Dites "dapper" à propos des nouveaux gestionnaires de types disponibles, en ajoutant (quelque part dans votre démarrage, avant d'essayer d'utiliser la base de données):

    Dapper.EntityFramework.Handlers.Register();
    

Utiliser la géométrie et la géographie

Une fois les gestionnaires de types enregistrés, tout devrait fonctionner automatiquement et vous devriez pouvoir utiliser ces types comme paramètres ou valeurs de retour:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow