2017-04-11 55 views
1

我想將列值映射到嵌套對象。Dapper:自定義地圖列到嵌套對象

例如在我的數據庫表中我有:

Users 
(
varchar UserName, 
varchar Password, 
binary Permitions 
) 
在我的代碼

我有:

User{string UserName, string Password, Permition Permitions: {...}} 

我要像做

db.Query<User>("Select UserName, Password, Permisions PermitionsFromTable 
from Users WHERE [email protected] AND Password [email protected]", new { user, 
password 
}, user => 
{ 
user.Permitions = new Permition(); 
user.Permitions.LoadPermitions("PermitionsFromTable"); 
return user ; 
}); 

這是可能的?

回答

1

有一個Query的重載,它允許您指定多個要映射到的類型和一個結果類型,並且可以告訴它要分割的列,然後可以組合這些類型。所以,這樣的事情應該爲你想要的。

db.Query<User, byte[], User>(
    queryString, 
    new { user, password }, 
    splitOn: "PermisionsFromTable", 
    (user, perm) => 
    { 
     user.Permitions = new Permition(); 
     user.Permitions.LoadPermitions(perm); 
     return user; 
    });