Dapper和DynamicParameter()

时间:2013-08-16 04:05:42

标签: dapper

我正在查看代码,我无法阅读它。我也试图找到材料和示例,但我无法找到可以帮助我理解问题的具体或任何文档。有人可以读给我代码,如果有任何文档可以阅读它。

首先我的问题是为什么我们需要使用DynamicParameter()这是Dapper的一个对象。我也不确定=>是什么意思。

public void validRecord(string fileName, string rawContent, int userId)
{
    Run(conn => conn.Execute("[dbo].[storedProc_GETDone]"
        , new DynamicParameters
            (new Dictionary<string, object>
                {
                    {"fileName", fileName},
                    {"rowContent", rawContent},
                    {"userCreated", userId},
                }), CommandType.StoredProcedure));
}

1 个答案:

答案 0 :(得分:1)

Run不是dapper的一部分,但C#中的=>用于创建 lambda表达式,在这种情况下我希望它是Action<DbConnection> ,即我猜你的跑步看起来很像这样:

Run(Action<DbConnection> action) {
    using(var conn = CreateConnection()) {
        conn.Open();
        action(conn);
    }
}

即。它是“我要给你一个联系;你想用它做什么?” - 在这种情况下,您选择Execute存储过程。

现在,值得注意的是,在您的示例中,使用DynamicParameters没有任何好处,因为信息众所周知 - 您可以使用:

Run(conn => conn.Execute("[dbo].[storedProc_GETDone]",
    new { fileName, rawContent, userCreated = userId },
    CommandType.StoredProcedure));

也可以。因此,回答“为什么我们需要在这种情况下使用DynamicParameter - 。但是,在某些情况下,您可能会 - 尤其是在您手动构建SQL的情况下,例如:

if(name != null) {
    sql.Append("and Name = @name ");
    args.Add("name", name);
}