우리는 Dapper.Net을 광범위하게 사용하고 있으며 매우 만족합니다. 우리는 하나의 결과 집합을 출력 매개 변수를 얻기 위해 connection.Query 구문을 사용하는 경우,출력 매개 변수는 항상 multi.Read와 함께 null입니다.
var p = new DynamicParameters();
p.Add("@id", id);
p.Add("TotalRows", dbType: DbType.Int32, direction: ParameterDirection.Output);
using (var multi = cnn.QueryMultiple(string.Format("dbo.[{0}]", spName), p,
commandType: CommandType.StoredProcedure))
{
int TotalRows = p.Get<int>("@TotalRows"); //This is always null
var results = multi.Read<New_Supplier>().ToList<IDBSupplier>();
var areas = multi.Read<node>().ToList<IDBNode>();
var categories = multi.Read<node>().ToList<IDBNode>();
int TotalRows = multi.Read<int>().FirstOrDefault(); // This works
}
그러나 : multi.Read를 사용하여 저장 프로 시저의 출력 매개 변수를 검색 할 때 그러나 우리는 문제를 가로 질러 온 채워집니다
var result = cnn.Query<New_Supplier>(string.Format("spname"), p,
commandType: CommandType.StoredProcedure).ToList<New_Supplier>();
int TotalRows = p.Get<int>("@TotalRows");
오류가 단정 한 DynamicParameters의 출력 매개 변수에 AttachedParam의 sqlValue는 항상 null 것입니다.
이 문제를 해결하기 위해 출력 매개 변수의 값을 저장 프로 시저의 결과 집합에 추가하고 그런 식으로 읽습니다.
왜 매개 변수가 항상 null입니까?
감사합니다 마크, 그것을 작동합니다. 나는 * 단순한 것이어야하지만 그냥 볼 수는 없다는 것을 알고 있었다. ... – Simon
@Simon 이제는 아마 분명하지만, 그냥 추가하는 것 : ADO.NET을 직접 사용할 때 똑같은 동작을 얻는다. –