我有4個子類:Video
,Image
,Note
和Form
。每個包含不同類型的數據。例如,Image
類包含磁盤上圖像文件的路徑和圖像屬性,並且Form
類包含表單字段值。各項目之間的共同元素,但是,GPS座標和航向,所以我有以下的抽象基類:模擬抽象基類和數據庫中的子類
public abstract class Content
{
public float? Latitude { get; set; }
public float? Longitude { get; set; }
public float? Heading { get; set; }
}
然而,使人感到困惑的是如何在數據庫建模。目前我有一個名爲Events
(舉例來說,假設一個事件是生日派對)和一個表格(Videos
,Images
,Notes
和Forms
)。每個表都有一個連接到Events
主鍵的外鍵。
使用LINQ-to-SQL,我爲每個表獲得5個類。這很好,如果我只想要一種類型的數據,例如Event.Images
,但我想要做的是統計Event
擁有的「內容」的總數並獲取GPS座標。我只需使用Event.Images.Count() + Event.Videos.Count() + ...
即可輕鬆完成計數,但我無法對GPS座標進行相同操作。有什麼方法可以模擬數據庫,以便我可以爲每個項目使用基類,並且在需要查看其數據時仍能夠獲取單個強類型項目?
感謝您的鏈接。他們對如何使用這些模型並沒有給出很好的描述,但它給了我一個做更多研究的起點。就我個人而言,我一直認爲單表模型是一個壞主意,因爲這意味着如果您添加一個新的子類,則必須爲其數據添加新列,並且可能會膨脹到不合需要的大小,儘管對於較小的應用程序,我可以看到使用它的優點。 – 2009-09-21 21:58:22
雅,有一定的權衡。這隻取決於添加新類型的可能性。如果不太可能,最好避免遍歷多個表並使用單個表。如果可能的話,其他模式之一。而且,是的,這些鏈接相當稀少,因爲他們希望你購買這本書:-)這是一本好書 - 值得我思考。 – SingleShot 2009-09-21 22:02:54