0

これを処理する最良の方法は、DataGridの行ごとに1年を表示できるようにするために、12か月のレコードを1年のレコード/オブジェクトに常に「ピボット」する必要があるアプリケーションです。私は、ピボットを実行するために、いくつかの醜いT-SQLを使用してDataSetsでこの時点までこの作業を行ってきました。

現在、このアプリケーションをNHibernateにアップグレードしていますが、これが1つの問題点です。

例として、私が月に一度学生のグループに与えるテストがあるとしましょう。私のDDLは次のようになります。

CREATE TABLE [Score](
    [ScoreId] [int] IDENTITY(1,1) NOT NULL,
    [StudentId] [int] NOT NULL,
    [Year] [int] NOT NULL, -- 4 digit year as an int
    [Month] [int] NOT NULL, -- 1 through 12 month value as int
    [TestScore] [int] NOT NULL
)  

DataGrid(学生/年ごとに1つのレコード)に次のフィールドを表示したい:
学生名、年、1月、2月、3月、4月、5月、6月、7月、8月、9月、10月、11月、12月

NHibernateでこの種のタスクに取り組む通常の方法は何ですか?どのように処理しますか?

4

2 に答える 2

1

私の意見では、NHibernate を純粋な ORM として使用し、ピボットはコードに任せたほうがよいでしょう。これは、NHibernate を使用して、テーブルの行をそのままテーブルの列と 1 対 1 の関係を持つクラスに読み取り、次にクラスのメソッド (または getter に何らかのロジックを持つプロパティ) を使用して、ピボットを行います。

純粋な DDD では、(このロジックをドメイン オブジェクトに入れる代わりに) サービスを使用してこれを行う必要があります。

この後、プレゼンテーション用に結果をグリッドにバインドできます。

于 2009-03-13T22:17:09.437 に答える