2013-03-27 24 views
0

我最近開始使用ASP.NET進行開發,並努力掌握Code-First。我正在爲一個實習項目工作,除了我已經參加過的一門課外,其他知識都很少。我絕不會要求一個完整的解決方案或懶惰。如何使用Code-First來表示聚合實體?

我一直在嘗試幾天來創建一個堅實的ER圖,我相當肯定下面的一個將代表我需要存儲的所有信息。請讓我知道,如果你看到任何可以改進的方法。

我想要做的事:

對於這個項目管理員將創建一個配有下列屬性。然後,管理員將分配時間段,這些時間段表示房間將在幾小時內可用以及一週中哪幾天可用。

用戶將填寫他們的基本信息並填寫表示他們可用的時間的表格。

在所有用戶註冊後,管理員將運行一個調度算法,以提出最接近最有效的時間表(因爲它很難)。

分配的關係代表與房間時間槽有關的用戶時間槽,以便產生哪些用戶在什麼時間分配到什麼房間的表。

我使用Visual Studio 2012

問題

  1. 我會如何表示使用代碼首先,這些骨料實體?不一定要爲這個確切的圖表尋求代碼,但可能是幫助我將我的頭圍繞Code-First的快速示例。
  2. 我的映射對這些關係看起來是否正確?

任何幫助或指向正確的方向非常感謝!謝謝!

下面是表示以下內容的ER示圖:

  • 室(ID,數量,建築,容量)
  • 時隙(ID,startHour,endHour,星期)
  • 用戶(ID,名字,姓氏,電子郵件)
  • 推介(用戶ID,TIMEID)
  • 保留(roomID,TIMEID)
  • 分配(reservedID,availableID)

ER Diagram

+0

這是一個完整的項目,我真的不知道你期望什麼作爲答案。 – Aristos 2013-03-27 21:56:28

回答

1

首先,在ER圖我本來期望直接從房間的鏈接時隙(右上)和用戶,以時隙(右下圖),但我們知道,將要運行的可能查詢我建議ERD應該如下。

連接到名爲RoomAvailability的實體的房間。RoomAvailability包含房間的所有空閒時間段,因此,在您認爲必要的情況下,每個房間每天會有一個記錄(RoomId,Date,StartTime,EndTime)在未來幾天內填充。

同樣我會有一個UserAvailability(UserId,Date,StartTime,EndTime)鏈接到用戶。

與包含所有房間預訂的房間和用戶相關的實體房間預訂(RoomId,UserId,Date,StartTime,EndTime)(假定只有1個用戶可以預訂房間)。

當預訂房間時,會添加RoomReservation記錄,並且可以將單個RoomAvailability記錄分成2個單獨的記錄(例如,整天免費房間,然後有人在白天預訂一個廣告位,在開始時留下2個免費時間段,一天結束)。

當預約被取消時,RoomReservation記錄被刪除並且2個RoomAvailability記錄可以合併回1(與上面相反)。

我相信,可用插槽的拆分和合並是類似系統的工作原理。

+0

感謝您的意見。我忘了提及一個房間在空閒時可供多個用戶使用。不只是一位用戶預訂房間。有點像電影院的房間。 – masterwok 2013-03-27 22:36:29

+0

這使它更有趣。在RoomAvailability中包含freeCapacity並且RoomReservation和User之間的鏈接成爲多對多映射 – 2013-03-27 22:48:29

+0

啊謝謝你剛剛提出這個問題,這很有意義。 – masterwok 2013-03-27 23:19:03