Ich weiß, dass Dapper TVF unterstützen kann, aber wie senden Sie zusätzliche Parameter zusammen mit TVF (ohne sie der IntDynamicParam-Klasse hinzuzufügen)? Siehe das folgende Beispiel von Tests.cs, ich habe geändert, um den zusätzlichen Parameter hinzuzufügen:
%Vor%Ich habe Folgendes versucht, aber Fehler bekommen (Es existiert keine Zuordnung vom Objekttyp SqlMapper.Tests + IntDynamicParam zu einem bekannten verwalteten systemeigenen Providertyp.):
%Vor%Danke für die Antwort Sam, aber die Frage war ein bisschen anders. Ich möchte wissen, wie man eine andere Variable zusammen mit dem Tupel übergibt. Siehe den modifizierten SP unten:
%Vor% Es gibt sehr wenig Magie über IDynamicParameters
Alles was Sie beachten müssen, ist die Implementierung von AddParameters
auf dem Open IDbCommand.
Angenommen, Sie möchten ein Tupel von Ints, können Sie Folgendes implementieren:
%Vor%Gefolgt von:
%Vor%Dann können Sie Tupel mit übergeben:
%Vor% Hier ist eine komplette Lösung, um das ICustomQueryParameter
Schnittstelle und einen Code mit I (in der Unterseite angebracht Seite) schrieb, lassen Sie jede IEnumerable zu einem StoredProcedure senden adrett verwenden, selbst wenn T mehrere Eigenschaften hat:
Hier ist der Code aus dem Link:
%Vor% Du musst ICustomQueryParameter
immer noch folgendermaßen zusammenführen:
Ссылка
Es gibt ein nugget-Paket, Dapper TVP , das einige Klassen enthält, die die Verwendung von Tabellenwerten erleichtern .
Es sollte beachtet werden, dass das Paket von Dapper 1.12.1 oder höher abhängig ist.
Mit diesem Paket sieht die Übergabe eines tvp an eine gespeicherte Prozedur etwa so aus:
%Vor%Ich musste auch Tabellenwerte und reguläre Parameter übergeben können. Die Kombination von @Esen und @ Roger-Joys Antworten gab mir die folgende Klasse. Diese Klasse ist speziell darauf ausgerichtet, den Typ 'stringlist_to_table' zu verwenden, Sie können ihn jedoch entsprechend Ihren Anforderungen ändern. Es schien mir sinnvoll, für jeden TVP-Typ, mit dem man sich befassen würde, eine spezifische Methode zu haben.
%Vor%Verwendung:
%Vor%Hier ist die Implementierung von DynamicParametersWithTVP. Es enthält im Wesentlichen eine DynamicParameters-Klasse, um das Nicht-TVP-Zeug zu handhaben, und das daraus für TVP aufgebaute.
%Vor%Wenn Sie Ihre benutzerdefinierte Klasse von DynamicParameters ableiten und IDynamicParameters implementieren, können Sie das oben genannte Problem lösen.
%Vor%.....
Ich habe eine allgemeine Klasse geschrieben, mit der man einen solchen Prozess aufrufen kann:
%Vor%Tags und Links c# model-view-controller orm dapper