SQL ServerとMarsでormliteを使う方法
-
12-12-2019 - |
質問
ServiceStack aficionados、こんにちは!
私たちは軍団です(私はそう願っています)、兄弟族を助けてください:)
2つのResultsetsを返す1つのSQL Server 2008ストアドプロシージャコールで2つのコレクションを入力しようとしています。 私の接続文字列には "multipleActiveresultsets= true"がありますが、まだこのエラーが発生しています。
'r.nextresult()'はタイプの例外を投げました 'System.InvalidOperationException'
これは私のコードです:
IList<ProjectMember> projectMembers = null;
IList<Project> projects = DbFactory.Run(dbCnx =>
{
using (var dbCmd = dbCnx.CreateCommand())
{
dbCmd.CommandType = CommandType.StoredProcedure;
dbCmd.CommandText = "mySchema.myStoredProc";
dbCmd.Parameters.Add(new SqlParameter("@categoryId", categoryId));
using (profiler.Step("ProjectService.myStoredProc"))
{
var r = dbCmd.ExecuteReader();
projectMembers = r.ConvertToList<ProjectMember>();
return r.NextResult() ? r.ConvertToList<Project>() : null;
}
}
});
.
これは可能ですか?もしそうなら、誰かがそれをする方法についての例を私に示すことができますか?
ありがとう、
Samir
解決
私は方法を見つけましたが、私はDapperとのormliteを置き換えなければなりませんでした:
using(var cnx = DbFactory.CreateConnection(Global.ConnectionString))
{
using (var multi = cnx.QueryMultiple("mySchema.myStoredProc", new { communityId, categoryId }, commandType: CommandType.StoredProcedure))
{
var projectMembers = multi.Read<ProjectMember>().ToList();
var projects = multi.Read<Project>().ToList();
BindProjectMembers(projects, projectMembers);
return projects;
}
}
.
火星の改善の前の2倍(40ミリ秒から20ミリ秒)の2倍(40ミリ秒から20ミリ秒)です。
所属していません StackOverflow