Dapper.NET
Korzystanie z DbGeography i DbGeometry
Szukaj…
Wymagana konfiguracja
zainstaluj wymagany zestaw
Microsoft.SqlServer.Types
; nie są one instalowane domyślnie i są dostępne tutaj w firmie Microsoft jako „Typy CLR Microsoft® System dla Microsoft® SQL Server® 2012” - należy pamiętać, że istnieją osobne instalatory dla x86 i x64.zainstaluj
Dapper.EntityFramework
(lub silny odpowiednik); można to zrobić za pomocą interfejsu użytkownika IDE „Manage NuGet Packages ...” lub (w konsoli Menedżera pakietów):install-package Dapper.EntityFramework
dodaj wymagane przekierowania wiązania zestawu; dzieje się tak, ponieważ Microsoft dostarcza wersję 11 zestawów, ale Entity Framework prosi o wersję 10; możesz dodać następujące elementy do
app.config
lubweb.config
ramach elementu<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>
powiedz „dapper” o dostępnych modułach obsługi nowego typu, dodając (gdzieś podczas uruchamiania, zanim spróbuje użyć bazy danych):
Dapper.EntityFramework.Handlers.Register();
Korzystanie z geometrii i geografii
Po zarejestrowaniu procedur obsługi typów wszystko powinno działać automatycznie i powinieneś być w stanie używać tych typów jako parametrów lub zwracać wartości:
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}");