Probleme beim Festlegen der RDLC-Datenquelle auf "Objekt"

Hintergrund:

Ich wurde mit der Konvertierung einer Access-Datenbankanwendung in ASP.Net C # MVC beauftragt. Dies ist meine erste MVC-Anwendung.

Es gibt 10 Berichte, die konvertiert werden müssen. Wir verwenden RDLC-Dateien und Reportviewer. Ich verwende Visual Studio 2010 mit den neuesten Patches. Wir schließen uns einer SQL Server-Datenbank an, die mit der vorhandenen Access-Datenbank gefüllt ist, sodass die Tabellenstruktur ziemlich genau festgelegt ist. Andernfalls müssen wir versuchen, Daten aus 10 Jahren zu konvertieren.

Ich habe bis auf zwei alle Berichte fertiggestellt. Die Abschlussberichte erfordern mehr Verarbeitung und zeigen nicht nur Daten aus der Datenbank an. Am einfachsten ist es, ein C # -Objekt zu erstellen und die gesamte Verarbeitung serverseitig durchzuführen. Anschließend können Sie die Ergebnisse mit RDLC anzeigen.

Problem

Das Problem ist, dass Visual Studio die von mir erstellten Objekte nicht als potenzielle Datenquellen erkennt. Jedes Mal, wenn ich versuche, ein Dataset hinzuzufügen, wird der Assistent für die Datenquellenkonfiguration aufgerufen und nur die SQL Server-Datenbank als mögliche Datenverbindung angeboten. Ich weiß, dass es einen Bildschirm gibt, auf dem Sie ein Objekt als Dataset auswählen können, aber ich sehe diesen Bildschirm nie.

Hier sind die Objekte (zur Verdeutlichung wurden die Verarbeitungsfunktionen entfernt):

public class TurnAroundVal
{
    // Registration Package information
    public string dataType { get; set; }

    // Calculated totals; values only set through constructor or calculation function
    public int packageCount { get; private set; }
    public int dayCount { get; set; }
    public double avgTurnAround { get; private set; }
    public int upperRange { get; private set; }
    public int lowerRange { get; private set; }
}

public class TurnAroundVals
{
    // Public Variables
    public IEnumerable<TurnAroundVal> TurnArounds { get; private set; }
    public DatePass dates { get; set; }
    public int pkgTotal { get; private set; }
    public double dayTotal { get; private set; }
    public double avgAllTurnArounds { get; private set; }
}

Ich wäre auch bereit, die IEnumerable von "TurnAroundVal" als Datenquelle zu verwenden und einfach die Daten, int und double als Parameter zu übergeben. Beides würde funktionieren.

Frage

Gibt es in Visual Studio 2010 eine Einstellung, die fehlt, damit der RDLC-Designer die von mir erstellten Objekte sehen kann? Liege ich falsch, wenn ich denke, dass dies mit den von mir definierten Klassen funktioniert?

Antworten

Alle Vorschläge waren hilfreich, aber letztendlich hat es für mich funktioniert, ein temporäres Nicht-Web-Projekt in derselben Lösung zu erstellen und den RDLC dort zu erstellen. Als ich einen Datensatz hinzufügte, wurde als Option "Objekte" angezeigt. Sie müssen einen Verweis auf Ihr Webprojekt hinzufügen, damit Ihre Objekte sichtbar sind. Anschließend können Sie den gewünschten Verweis auswählen und im RDLC verwenden. Danach können Sie die RDLC-Datei einfach in Ihr Webprojekt ziehen, das temporäre Projekt löschen und loslegen. Denken Sie daran, dass Sie die Datenquellen manuell in den Code einfügen müssen, und sie müssen den gleichen Namen haben, den Sie im RDLC angegeben haben.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage