バックグラウンド:
私はAccessデータベースアプリケーションをASP.NetC#MVCに変換する任務を負っています。これは私の最初のMVCアプリケーションです。
変換が必要なレポートは10個あります。RDLCファイルとreportviewerを使用しています。最新のすべてのパッチでVisualStudio2010を使用しています。既存のAccessデータベースによって作成されたSQLServerデータベースに接続しているため、テーブル構造はほぼ固定されています。そうでない場合は、10年間のデータを変換する必要があります。
2つを除くすべてのレポートを完了しました。最終レポートはより多くの処理を必要とし、データベースからのデータを表示するだけではありません。これを行う最も簡単な方法は、C#オブジェクトを作成し、すべての処理をサーバー側で実行してから、RDLCを使用して結果を表示することです。
問題
私が抱えている問題は、VisualStudioが作成したオブジェクトを潜在的なデータソースとして認識しないことです。「データセットの追加」を試みるたびに、「データソース構成ウィザード」が表示され、可能なデータ接続としてSQLServerデータベースのみが提供されます。データセットとしてオブジェクトを選択できる画面が存在することは知っていますが、その画面が表示されることはありません。
オブジェクトは次のとおりです(わかりやすくするために処理関数は削除されています)。
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; }
}
また、「TurnAroundVal」のIEnumerableをデータソースとして使用し、日付、int、およびdoubleをパラメーターとして渡すこともできます。どちらでも動作します。
質問
Visual Studio 2010に、作成したオブジェクトをRDLCデザイナーが表示できるようにするための設定がありませんか?これが私が定義したクラスで機能すると思っても間違っていますか?
答え
与えられたすべての提案は役に立ちましたが、最終的に私にとってそれが機能するようになったのは、同じソリューションで一時的な非Webプロジェクトを作成し、そこでRDLCを作成することでした。データセットを追加しようとすると、オプションとして「オブジェクト」が表示されます。オブジェクトが表示されるようにWebプロジェクトへの参照を追加する必要がありますが、必要なものを選択してRDLCで使用できます。その後、RDLCファイルをWebプロジェクトにドラッグアンドドロップし、一時プロジェクトを削除するだけで、準備は完了です。データソースはコードで手動で追加する必要があり、RDLCで指定したものと同じ名前を付ける必要があることを覚えておいてください。