0

我需要一些帮助来考虑我的业务对象的设计。我们的数据库记录了我们公司员工每天进出的时间。每条记录还存储员工的用户 ID、员工登录的工作站 ID,显然还有日期。

在任何给定日期,用户可以在任何数量的工作站有多个进入和退出时间。记录看起来像这样:

SignInID | UserID | WorkStationID | DateTimeEntry | DateTimeExit

我的asp.net 表单上有一个reportviewer,它必须显示按日期、工作站或用户分组的此进入和退出数据的报告。

例如,它必须显示特定日期的所有数据(在该日期内,按工作站排序)。

在此处输入图像描述

或者它必须显示给定工作站的所有数据(并在其中按日期排序)和其他类似格式。

在此处输入图像描述

到目前为止,我有一种方法很怪异,我选择了数据并构建了某种临时数据表以显示在我的表单上。我现在想使用对象重新设计,但我不知道如何设计层次结构,即什么对象包含进入和退出时间的集合,以及如何使其足够灵活以便可以查询它(也许使用 Linq? ) 基于各种显示标准?

我真的很想了解更多关于设计对象和使用正确的术语来做我想做的事情,所以如果你能给我一些解释这些概念的文章,那也会很有帮助。

编辑:好的,至少我学到了一些新东西。我正在尝试做的是 ORM - 对象关系映射 - 并且 .NET 有一个名为 Entity Framework 的内置 ORM 工具。到现在为止还挺好。现在我必须看看它是否可以帮助我弄清楚如何组织我的数据。

4

1 回答 1

0

好吧,我实际上要感谢社区没有回答我的问题,因为我学到了很多关于 Entity Framework、Linq(以及它在 .NET 3.5 中对 Entity Framework 的限制)和一大堆其他东西来回答我自己的问题问题。

我最终做的是使用实体框架创建数据库的实体模型,从而创建了组织数据所需的业务对象。我了解到我的数据不是按层次结构设计的,而是每次条目记录都包含诸如 Workstation 和 User 之类的关联。我使用 Linq-to-Entities 查询来选择我想要的数据并使用它的关联(例如 Time.Workstation.Name 或 Time.User.FullName)将其展平,这样最后,我的投影对象包含了我的所有数据在我报告的每一行中都通缉。我的投影对象实际上是我创建的一个 POCO,用于保存查询的数据并使其可用作我的 rdlc 报告的数据源。

最后,我将查询结果绑定到 Reportviewer 的 ObjectDataSource,它连接到我能够根据自己的喜好定义的 rdlc 文件:即首先显示工作站或用户,或者我想显示的任何相关信息。

于 2013-06-23T06:40:04.940 回答