2015-07-22 508 views
6

我有一個簡單的類是這樣的:如何忽略Dapper中的某些屬性?

public class User 
{ 
    public Guid Id{ get; set; } 
    public string UserName { get; set; } 
    public byte[] RowVersion { get; set; } 
} 

用dB Rowversion列tabale得到自動value.when我Inser與短小精悍

var result = db.Execute("[dbo].[User_Insert]", user, trans,commandType:CommandType.StoredProcedure); 

小巧玲瓏的用戶生成的所有屬性參數,我得到錯誤像這樣

過程或函數User_Insert指定的參數太多。

如何忽略Dapper參數中的Rowversion?

我的程序代碼是:

ALTER PROCEDURE [In4].[User_Insert] 
     @Id   uniqueidentifier, 
     @UserName nvarchar(4000)= NULL 
AS 
BEGIN 
    insert into [In4].[Users] ([Id], [UserName]) 
       VALUES (@Id, @UserName) 
End 
+0

@ user2864740我更新了我的問題 –

+0

@ user2864740用戶有我忽略它在我的問題。我更新問題 –

回答

2

你可以在一個匿名對象傳遞,只有你想要的屬性。

var result = db.Execute("[dbo].[User_Insert]", new { user.Id, user.UserName }, trans, commandType:CommandType.StoredProcedure); 

或者,你可以使用Dapper Contrib擴展和創建映射類,它可以讓你忽略特定屬性。

+0

如何創建Dapper Contrib的映射類? –

+0

您可以將Dapper.Contrib的'[Computed]'屬性添加到您想要忽略的任何屬性。但我不確定這是否僅在使用Dapper.Contrib擴展方法時纔會考慮。 – christophano