1

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

起初我的问题是为什么我们需要使用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));
}
4

1 回答 1

1

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

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

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

现在,值得注意的是,在您的示例中 using 没有任何好处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);
}
于 2013-08-16T06:57:29.530 回答