0

处理这个问题的最佳方法是什么我有一个应用程序,我经常必须将 12 个月的记录“透视”到一年的记录/对象中,以便能够在 DataGrid 中每行显示一年。到目前为止,我一直在使用一些丑陋的 T-SQL 在 DataSets 中进行这项工作,以实现枢轴。

我现在正在将此应用程序升级到 NHibernate,这是我遇到的一个问题。

例如,假设我有一个测试,我每月给一组学生做一次测试。我的 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 月、2 月、3 月、4 月、5 月、6 月、7 月、8 月、9 月、10 月、11 月、12 月

使用 NHibernate 处理此类任务的正常方法是什么?你会怎么处理?

4

2 回答 2

1

在我看来,最好将 NHibernate 用作纯 ORM 并将转轴留给您的代码。这意味着使用 NHibernate 将表中的行原样读取到与表列具有一对一关系的类中,然后使用类上的方法(或 getter 中具有某些逻辑的属性)来做旋转。

在纯 DDD 中,您应该使用服务来执行此操作(而不是将此逻辑放入域对象中)。

在此之后,您可以将结果绑定到网格以进行演示。

于 2009-03-13T22:17:09.437 回答
0

我想我会把这个添加到对话中。

线程讨论了覆盖类的 ToString() 。我想我可以为我的 MonthValue 对象执行此操作...只需让它们通过 ToString() 返回分数;

但是,这并不能解决映射问题。根据对此问题的其他评论,点语法在 DataPropertyName 中对我不起作用。

于 2009-03-24T23:07:49.657 回答