我想用Dapper調用一個存儲過程,到目前爲止我看到的所有代碼都是通過用@字符指定存儲過程參數來完成的。這意味着我不能簡單地定義模型類並將其傳遞到Dapper的Query或Execute方法中,重新翻譯模型實例,這似乎浪費了時間和內存。這是我真正需要做的嗎?使用Dapper調用T-SQL存儲過程時,是否需要使用'@'?
例如,下面的代碼接受模型實例。該模型具有sp_GetUser表的所有屬性。我希望Dapper在調用它時將這些模型屬性傳遞給存儲過程的參數。這是這種情況還是我真的需要定義在'參數'參數中傳遞的對象?
public IList<User> GetUsers(UserSP user)
{
using (var cn = new SqlConnection(ConnectionString))
{
var users = cn.Query<User>("sp_GetUsers",
param: new
{
@Id = user.Id,
@NAme = user.Name,
@Age = user.Age
},
commandType: CommandType.StoredProcedure).ToList();
return users;
}
}
不,你不需要使用@字符數限制(HTTPS:/ /github.com/StackExchange/Dapper#parameterized-queries) – peco
太棒了。我是否仍然只需要傳入可映射到過程參數的那些屬性? –
你可以試試嗎? param:用戶 – Crowcoder