Um eine Seite anzuzeigen, muss ich eine Menge Informationen aus verschiedenen Tabellen abrufen, und vorerst dauert es etwa 20 Sekunden, um die Seite zu laden, die schrecklich ist.Verstehen von mehreren Tabellen Ergebnis unter Entity Framework
Also ich möchte alles in eine Store-Prozedur zu bewegen und alle diese Informationen die alte DataTable Weg.
ich diese
public WinnerPageInformation FindWinnerPageInformation(int calendarId)
{
BackendPagesContext ctx = new BackendPagesContext(db.Connection);
IMultipleResults results = ctx.WinnersBackendPageInformation(calendarId);
return new WinnerPageInformation()
{
Challenges = results.GetResult<Challenges>(),
Content = results.GetResult<ContentWinners>().FirstOrDefault(),
Einfo = results.GetResult<ContentEmails>().FirstOrDefault(),
Fields = results.GetResult<SubscriberFields>(),
Prizes = results.GetResult<Prizes>(),
Winners = results.GetResult<Winners>()
};
}
und WinnersBackendPageInformation sieht aus wie diese
public class BackendPagesContext : DataContext
{
public BackendPagesContext(System.Data.IDbConnection connection)
: base(connection) { }
[Function(Name = "dbo.sp_GetWinnersBackendPageInformation")]
[ResultType(typeof(JK_ContentWinners))]
[ResultType(typeof(JK_Winners))]
[ResultType(typeof(JK_SubscriberFields))]
[ResultType(typeof(JK_Prizes))]
[ResultType(typeof(JK_Challenges))]
[ResultType(typeof(JK_ContentEmails))]
public IMultipleResults WinnersBackendPageInformation(
[Parameter(Name = "calendarId", DbType = "Int")] int calendarId)
{
IExecuteResult result =
this.ExecuteMethodCall(this,
((MethodInfo)(MethodInfo.GetCurrentMethod())),
calendarId);
return (IMultipleResults)(result.ReturnValue);
}
}
public interface IMultipleResults : IFunctionResult, IDisposable
{
IEnumerable<TElement> GetResult<TElement>();
}
aber das Problem, das ich mit Blick auf bin, ist, dass die Linie this.ExecuteMethodCall
einen Fehler wirft sagen, dass das Ergebnis nicht ein multiple Ergebnis.
mein Speicher Vorgehensweise sieht aus wie
ALTER PROCEDURE sp_GetWinnersBackendPageInformation
@calendarId numeric = 0
AS
BEGIN
SELECT * FROM ContentWinners WHERE calendar_id = @calendarId;
SELECT * FROM Winners WHERE calendar_id = @calendarId;
SELECT * FROM SubscriberFields WHERE calendar_id = @calendarId ORDER BY position;
SELECT * FROM Prizes WHERE calendar_id = @calendarId ORDER BY prizetype_id, to_day, title;
SELECT * FROM Challenges WHERE calendar_id = @calendarId;
SELECT * FROM ContentEmails WHERE calendar_id = @calendarId;
END
GO
Fehlermeldung
Mehr als ein Ergebnistyp für die Funktion ‚WinnersBackendPageInformation‘ deklariert ist, die IMultipleResults nicht zurück.
Was fehlt mir?
danke für den Hinweis ... kam nie zu diesem Kommentar :( – balexandre