我問了一個question recently,坦率地說,從給出的答案,我第二次猜測我的整個策略/我如何設計類和數據庫。實體框架類/數據庫架構建議需要
我還沒有在我的任何實體框架項目中使用virtual關鍵字,也沒有使用過Icollection,坦率地說,在reading about it in之後的一些例子中我並不完全理解爲什麼需要它,或者它是如何工作的。
在示例應用程序中,我有一個簡單的設計,其中有三個列表 - 人員,筆記和圖片。這種關係是這樣的:一個人可以擁有多張筆記和圖片,以及具有圖片標識的人。
public class Person
{
public int ID { get; set; }
public string name { get; set; }
public Picture logo { get; set; }
}
public class Note
{
public int ID { get; set; }
public string Text { get; set; }
public Person Owner { get; set; }
}
public class Picture
{
public int ID { get; set; }
public string Path { get; set; }
public Person Owner { get; set; }
}
當我要選擇的,一個人擁有的筆記列表,我只是執行db.Notes.Where(x=>x.owner=="y")
上的音符對象。我想我明白,如果我要在人員課程上使用Icollection,則可以按照db.person.select(x=> x.notes)
的順序執行某些操作來檢索所有筆記。我在這個想法中糾正了嗎?
如果你在上面這個相對簡單的例子中,你將如何構建類(包括ICollection,虛擬或其他)?
此外,最重要的是,上面只是一個例子,但是在我的實際應用中,我使用了一個非常類似的結構,我使用自定義類型作爲「連接器」/外鍵。
在很多例子中,我一直在閱讀(在上面的例子中),他們將使用public int OwnerID
而不是public person Owner
。這實際上引發了我,我質疑我的整個英孚戰略。有什麼區別?
任何意見將不勝感激。
是的,與SQL相比,EF是一種範例轉換,我會使用最終設計[我給你]來設計它(http://stackoverflow.com/questions/7638992/entity-framework-code-first-協會-FK-問題 - 和 - 假設 - 默認值)。 –