SQL Server와 Mars에서 ormlite를 사용하는 방법은 무엇입니까?

c# dapper mars ormlite-servicestack

문제

ServiceStack 애호가,여보세요!

우리는 군단입니다 (나는 그렇게되기를 바랍니다). 그래서 형제를 도와주세요. :)

두 개의 결과 집합을 반환하는 하나의 SQL Server 2008 저장 프로 시저 호출로 두 개의 모음을 채우려고합니다. "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;
          }
      }
 });

이것이 가능한가? 그렇다면 어떻게 누군가 나를 보여 줄 수 있습니까?

감사,

사미르

수락 된 답변

나는 길을 찾았지만 orpper를 Dapper로 대체해야했습니다.

            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;
                }
            }

이것은 완벽하게 작동하며 MARS 개선 전보다 두 배 빠릅니다 (40ms에서 20ms까지).



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.