Dapper.NET
Использование DbGeography и DbGeometry
Поиск…
Требуется конфигурация
установите требуемую сборку
Microsoft.SqlServer.Types
; они не установлены по умолчанию и доступны от Microsoft здесь как «Типы среды Microsoft® для CLR для Microsoft® SQL Server® 2012» - обратите внимание, что для x86 и x64 существуют отдельные установщики.установить
Dapper.EntityFramework
(или эквивалент сильного имени); это можно сделать с помощью интерфейса IDE «Управление пакетами NuGet ...» или (в консоли диспетчера пакетов):install-package Dapper.EntityFramework
добавить необходимые переадресации привязки сборки; это потому, что Microsoft отправляет v11 сборок, но Entity Framework запрашивает v10; вы можете добавить следующее в
app.config
илиweb.config
в элементе<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>
скажите «dapper» о доступных доступных обработчиках типов, добавив (где-то в вашем запуске, прежде чем он пытается использовать базу данных):
Dapper.EntityFramework.Handlers.Register();
Использование геометрии и географии
Когда регистрируются типы обработчиков, все должно работать автоматически, и вы должны иметь возможность использовать эти типы в качестве параметров или возвращаемых значений:
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}");