sql >> Databasteknik >  >> RDS >> Sqlserver

Hantera flera resultat från en lagrad procedur med SqlQuery

DbContext har inget inbyggt stöd för att materialisera flera resultatuppsättningar. Det är dock ganska enkelt att uppnå genom att gå ner till ObjectContext och använda Translate metod för att kopiera resultat från en DbDataReader till enheter i din domänmodell.

Här är lite exempelkod. Detta förutsätter ditt ReferrerStatisticResult är bara en behållare för de två listorna som heter Set1 och Set2 . Justera självklart efter din faktiska domänmodell.

// Create container ready for the resultsets
var result = new RefererStatisticResult();

using (var myContext = new MyContext())
{
    // Create command from the context in order to execute
    // the `GetReferrer` proc
    var command = myContext.Database.Connection.CreateCommand();
    command.CommandType = System.Data.CommandType.StoredProcedure;
    command.CommandText = "[dbo].[GetReferrer]";
    // add in command parameters
    // (not shown)

    try
    {
        myContext.Connection.Open();
        var reader = command.ExecuteReader();

        // Drop down to the wrapped `ObjectContext` to get access to
        // the `Translate` method
        var objectContext = ((IObjectContextAdapter)myContext).ObjectContext;

        // Read Entity1 from the first resultset
        result.Set1 = objectContext.Translate<Entity1>(reader, "Set1", MergeOptions.AppendOnly);

        // Read Entity2 from the second resultset
        reader.NextResult();
        result.Set2 = objectContext.Translate<Entity2>(reader, "Set2", MergeOptions.AppendOnly);        
    }
    finally
    {
        myContext.Database.Connection.Close();
    }
}


  1. MySQL-handledning:MySQL IN-klausul (grundläggande)

  2. NodeJS/mySQL - ER_ACCESS_DENIED_ERROR Åtkomst nekad för användaren 'root'@'localhost' (med lösenord:YES)

  3. PostgreSQL vs. MySQL:Vilket är bäst?

  4. Konvertera Json till SQL-tabell