DbContext
tidak memiliki dukungan asli untuk mewujudkan banyak hasil. Namun, cukup mudah untuk dicapai dengan turun ke ObjectContext
dan menggunakan Translate
metode untuk menyalin hasil dari DbDataReader
menjadi entitas dalam model domain Anda.
Berikut beberapa contoh kode. Ini mengasumsikan ReferrerStatisticResult
. Anda hanyalah wadah untuk dua daftar yang disebut Set1
dan Set2
. Jelas sesuaikan dengan model domain Anda yang sebenarnya.
// 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();
}
}