2010-01-29 12 views
2

我正在爲ASP.NET MVC應用程序設計一個數據庫。我並不是專家,我很好奇下面的數據庫片段的最佳做法:處理ASP.NET中不同類型的表格MVC

我們將在我們的數據庫中存儲事件。每個事件將是不同類型的,其中一個或一些類型是專用的各個字段。舉個例子:

Events 
* Id 
* EventTypeId 
* AllEventTypes_Field 

EventType0 
* EventId (FK) 
* EventType0_Field 

EventType1 
* EventId (FK) 
* EventType1_Field 

最後我們會有一些事件類型。我試圖將所有字段放入一個大的事件表中,並在適當的情況下使用可爲空的字段。或者,我們可以將表格分離爲Supertype/Subtype:Events,EventType1,EventType2等(如上所述)。

對於數據庫設計部分,我想選擇什麼最有意義,並且是MVC框架的「最簡單」。基本上:什麼路徑會產生最少的頭痛? :)

對於超級/子類型,是否會拖動Events表併爲主事件表中的每個子類型創建類?如果是這樣,這篇文章的鏈接將非常有幫助。

感謝您的任何見解!

+1

你知道,如果你使用LINQ2SQL或實體框架爲你的數據庫ORM的對象?您應該在將其添加到項目中時選擇了一個。 – TJB 2010-01-29 21:37:54

+0

LINQ。雖然說實話,我不能肯定地說LINQ2SQL和EF有什麼不同。它是否會形成一個不同的世界?對不起新回覆:) – Dan 2010-01-30 04:19:32

回答

1

此Microsoft文章討論可選一到一對一的關係,基本上是你所描述的:

http://msdn.microsoft.com/en-us/library/dd326769(VS.85).aspx

+0

感謝您的鏈接,羅伯特。我還在尋找關於LINQtoSQL和/或EF如何處理那篇文章討論內容的信息。 – Dan 2010-01-31 13:09:34

+0

在Linq to SQL或EF中創建類很簡單,只需從Server Explorer中將表拖到Linq to SQL設計器即可。應該在類之間自動建立一對一的鏈接。在你的代碼中,鏈接應該可以像這樣訪問:'MyEvent.EventType1.EventType1_Field' – 2010-01-31 16:29:00

+0

假設我放棄了1:1鏈接並擁有一個大表。將表分成單獨的子類型/ LINQ類是否有意義? 我提出這個問題,因爲有一些屬性可能存在於1/2的子類型 - 所以我很想擁有一個大型數據庫表,但在我的數據層中有多個類 - 可行/可能嗎? 非常感謝您的意見,羅伯特:) – Dan 2010-01-31 20:01:44