2013-06-05 34 views
0

我需要一些幫助來思考我的業務對象的設計。 我們的數據庫記錄了我們公司員工出入時間的每日進出時間。每條記錄還存儲員工的用戶ID,員工登錄的工作站的ID以及明顯的日期。如何設計查詢和報告這些業務對象?

用戶可以在任何給定日期許多進入和退出時間在任意數量的工作站。 記錄看起來是這樣的:

SignInID | UserID | WorkStationID | DateTimeEntry | DateTimeExit 

我有我的asp.net表單上的ReportViewer必須顯示按日期,工作站或用戶分組此入口和出口數據的報告。

例如它必須顯示特定日期的所有數據(和內,通過工作站訂購)。

enter image description here

,或者必須顯示給定工作站的所有數據(和內,按日期排序)以及其他類似的格式。

enter image description here

直到現在我在我所選擇的數據和構成某種臨時數據表的顯示的窗體上的方法的畸形。 我現在想使用對象重新設計,但我不知道如何設計,即什麼對象包含的進入和退出時間收集層次結構,以及如何我使它具有足夠的靈活性,我可以使用LINQ查詢它(或許?)根據各種顯示標準?

我更多地瞭解設計對象,並使用正確的術語爲我想要做真正感興趣的,所以如果你能指出我的一些文章解釋這些概念將是非常有幫助了。

編輯:好的,至少我學到新的東西。我想要做的是ORM - 對象關係映射 - 而.NET有一個名爲Entity Framework的內置ORM工具。到現在爲止還挺好。現在我要看看它是否能幫助我弄清楚如何組織我的數據。

回答

0

嗯,實際上我不得不感謝社區回答我的問題,因爲我需要學習很多關於實體框架,Linq(及其在.NET 3.5中實體框架的限制)以及其他一些事情回答我自己的問題。

我最終什麼事做的是創建一個使用實體框架我的數據庫的實體模型,從而創建我需要整理我的數據的業務對象。我瞭解到我的數據不是按層次結構設計的,而是每個條目記錄包含的工作站和用戶都有協會。我使用Linq-to-Entities查詢來選擇我想要的數據,並使用它的關聯(例如Time.Workstation.Name或Time.User.FullName)展平它,以便最終我的投影對象包含所有數據I在我的報告的每一行都想要。我的預測對象實際上是一個POCO,它是爲了保存查詢數據並將其作爲我的rdlc報告的數據源而創建的。

最後,我將查詢結果綁定到一個Reportviewer的ObjectDataSource,它連接到我可以根據自己的喜好定義的rdlc文件:即首先顯示Workstation或用戶,或顯示我想要顯示的任何相關信息。