NHibernate - 12个月/ 1年和DataBinding

时间:2009-03-11 17:17:09

标签: .net nhibernate data-binding datagrid nhibernate-mapping

处理此问题的最佳方法我有一个应用程序,我不得不将12个月的记录“转移”到一年的记录/对象中,以便能够在DataGrid中每行显示一年。到目前为止,我一直在使用一些丑陋的T-SQL来完成这项工作,以便实现支点。

我现在正在将此应用程序升级到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处理此类任务的正常方法是什么? 你会怎么处理它?<​​/ p>

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我以为我会将此添加到对话中。

这个thread讨论了覆盖类的ToString()。我想我可以为我的MonthValue对象做这个...让他们通过ToString()返回得分;

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