Buscar..


Configuración requerida

  1. instale el ensamblado requerido de Microsoft.SqlServer.Types ; no se instalan de forma predeterminada, y están disponibles en Microsoft aquí como "Tipos de CLR de Microsoft® System para Microsoft® SQL Server® 2012"; tenga en cuenta que hay instaladores independientes para x86 y x64.

  2. instale Dapper.EntityFramework (o el equivalente con nombre Dapper.EntityFramework ); esto podría hacerse a través de la interfaz de usuario "Administrar paquetes NuGet ..." del IDE, o (en la Consola del Administrador de paquetes):

    install-package Dapper.EntityFramework
    
  3. agregue las redirecciones obligatorias de ensamblaje requeridas; esto se debe a que Microsoft entrega la v11 de los ensamblajes, pero Entity Framework solicita la v10; puede agregar lo siguiente a app.config o web.config bajo el elemento <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. diga a "dapper" sobre los nuevos controladores de tipos disponibles, agregando (en algún lugar de su inicio, antes de que intente usar la base de datos):

    Dapper.EntityFramework.Handlers.Register();
    

Usando geometría y geografía

Una vez que se hayan registrado los controladores de tipo, todo debería funcionar automáticamente y debería poder usar estos tipos como parámetros o valores de retorno:

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow