Ich habe eine einfache Klasse wie folgt:
public class User
{
public Guid Id{ get; set; }
public string UserName { get; set; }
public byte[] RowVersion { get; set; }
}
Rowversion-Spalte in Db Tabale erhalten auto value.wenn ich einen Benutzer mit Dapper eingeben
var result = db.Execute("[dbo].[User_Insert]", user, trans,commandType:CommandType.StoredProcedure);
Dapper generiere Parameter für alle Eigenschaften und erhalte so einen Fehler
Prozedur oder Funktion User_Insert hat zu viele Argumente angegeben.
Wie kann ich die Rowversion im Dapper-Parameter ignorieren?
Mein Prozedurcode ist:
ALTER PROCEDURE [In4].[User_Insert]
@Id uniqueidentifier,
@UserName nvarchar(4000)= NULL
AS
BEGIN
insert into [In4].[Users] ([Id], [UserName])
VALUES (@Id, @UserName)
End
Sie könnten ein anonymes Objekt mit nur den gewünschten Eigenschaften übergeben.
var result = db.Execute("[dbo].[User_Insert]", new { user.Id, user.UserName }, trans, commandType:CommandType.StoredProcedure);
Alternativ können Sie die Dapper Contrib- Erweiterungen verwenden und eine Mapping-Klasse erstellen, mit der Sie bestimmte Eigenschaften ignorieren können.