코드를 살펴보고 읽을 수 없습니다. 또한 재료와 예제를 찾으려고 노력했지만 문제를 이해하는 데 도움이되는 특정 또는 문서를 찾을 수 없었습니다. 누군가가 나에게 코드를 읽을 수 있고 읽을 수있는 문서가 있는지?
처음에는 Dapper의 객체 인 DynamicParameter()
를 사용해야하는 이유가 있습니다. 또한 무엇을하지 모르겠습니다 =>
것을 의미한다.
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));
}
Run
은 dapper의 일부는 아니지만 C #의 =>
는 람다 표현식 을 만드는 데 사용됩니다.이 경우 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);
}