Ich habe eine Entity "Point", die Id-, Text- und Geografiekoordinaten enthält.
%Vor%Dies ist ts SQL-Code der Tabelle und gespeicherte Prozedur des Einfügens. Ich habe Klasse für die Verwendung von dapper:
%Vor%c # -Klasse ist:
%Vor%Und Repository hat Methode
%Vor%Wenn ich ein solches System für eine andere Klasse benutze, ist alles ok, aber es gibt ein Problem mit dem Mapping, ich glaube es liegt am SqlGeography-Typ. Verwenden:
%Vor% Und ich habe eine Ausnahme The member coords of type Microsoft.SqlServer.Types.SqlGeography cannot be used as a parameter value
Gibt es ein Geheimnis, diesen Typ zuzuordnen?
Dapper 1.32 jetzt enthält direkte Unterstützung dafür . Dein Code sollte nun einfach funktionieren .
Dapper unterstützt keine DB-Provider-spezifischen Datentypen. In Ihrem Fall seine GEOGRAPHIE.
Dapper hat keine DB-spezifischen Implementierungsdetails, es funktioniert über alle .net Ado-Anbieter einschließlich SQLite, SQL, Firebird, Oracle, MySQL und SQL Server
Um diesen Parameter mit Dapper zu behandeln, müßten Sie Ihre eigene Handhabung dafür schreiben. Ein Beispiel finden Sie in dieser Antwort .
Viel Glück
Ich stieß auf ein ähnliches Problem. Ich fand, dass Dapper resultierende Felder zu Microsoft.SqlServer.Types.SqlGeography
gut abbildet, aber die Verwendung als Parameter funktionierte nicht.
Ich habe die Datei SqlMapper.cs so modifiziert, dass sie Unterstützung für diesen Typ enthält. Sie können den Geist hier sehen: Ссылка
Klicken Sie auf "Revisionen", um zu sehen, was ich geändert habe.
Tags und Links sql-server c# mapping dapper sqlgeography