【发布时间】:2017-10-08 22:17:57
【问题描述】:
我想用 Dapper 调用一个存储过程,到目前为止我看到的所有代码都是通过使用 @ 字符指定存储过程参数来实现的。这意味着我不能简单地定义一个模型类并将其传递给 Dapper 的 Query 或 Execute 方法并重新翻译模型实例,这似乎是在浪费时间和内存。这是我真正需要做的吗?
例如,下面的代码接受一个模型实例。该模型具有 sp_GetUser 表的所有属性。我希望 Dapper 在调用它时将这些模型属性传递到存储过程的参数中。是这种情况还是我真的需要定义在“param”参数中传递的对象?
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;
}
}
【问题讨论】:
-
太棒了。我还需要只传入那些可以映射到过程参数的属性吗?
-
你可以试试吗?参数:用户
-
现在,很遗憾没有。
-
是的,只允许那些可以映射到过程参数的属性。否则会抛出异常。
标签: c# tsql stored-procedures dapper