Comment utiliser ormlite avec SQL Server et Mars?

c# dapper mars ormlite-servicestack

Question

Aficionados de ServiceStack, bonjour!

Nous sommes légion (je l'espère), alors aidez un frère à sortir :)

J'essaie de remplir deux collections avec un appel de procédure stockée SQL Server 2008 qui renvoie deux jeux de résultats. J'ai "MultipleActiveResultSets = True" dans ma chaîne de connexion mais je reçois toujours cette erreur:

'r.NextResult ()' a généré une exception de type 'System.InvalidOperationException'

Voici mon code:

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

Est-ce possible? Si oui, est-ce que quelqu'un peut me montrer un exemple sur la façon de le faire?

Merci,

Samir

Réponse acceptée

J'ai trouvé un moyen mais j'ai dû remplacer ormLite par 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;
                }
            }

Il fonctionne parfaitement et est deux fois plus rapide (de 40 à 20 ms) qu’avant l’amélioration de MARS.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi