2013-05-29 165 views
0

我EF新的學習者,我有一些問題要問:有關關鍵字實體框架的問題和關係

我不明白是什麼呢虛擬意味着例如一對多,我給一個例子: 一個問題可以有很多選項,例如

public class Question 
{ 
    public int QuestionId { get; set; } 
    public string Title { get; set; } 
    public virtual List<Option> Options { get; set; } 
} 

public class Option 
{ 
    public int OptionId { get; set; } 
    public string OptionText { get; set; } 
    public virtual Question Question { get; set; } 
} 

但什麼是「2」虛擬平均值,因爲如果我刪除此行virtualpublic virtual List<Option> Options { get; set; },我沒有發現任何差異,它的工作原理以及一對多,這樣你就可以解釋我非常清楚和容易地意識到,如果它是覆蓋,覆蓋什麼?

2. 我不知道我們什麼時候應該使用API​​流利,例如,前一到很多前。沒有api流利,它仍然是一對多的關係,所以請告訴我什麼時候該使用它?例如在哪些場合。

的API精通 ,我知道「withmany」和「的hasMany」在一起,他們的意思是「多對多」,什麼是「withrequired?isoptional?」

回答

0

我想我可以回答以下幾點:

  1. EF定義所有的導航屬性的虛擬,使EF將在運行時創建自己的品牌類派生的新類(動態代理),並用它來代替。這個新的動態創建的類包含第一次訪問時加載導航屬性的邏輯。這個特性被稱爲延遲加載(或更好的透明延遲加載)。

請參閱以下鏈接瞭解更多詳細

Entity Framework 4.1 Virtual Properties

2,當使用流利的API

當使用代碼優先的工作,您可以通過定義域CLR類定義你的模型。默認情況下,實體框架使用Code First約定將您的類映射到數據庫模式。如果您使用Code First命名約定,則在大多數情況下,您可以依靠Code First根據您在類上定義的外鍵和導航屬性設置表之間的關係。如果您在定義類時沒有遵循約定,或者想要改變約定的工作方式,則可以使用流暢的API或數據註釋來配置類,以便Code First可以映射表之間的關係。

http://msdn.microsoft.com/en-us/data/jj591620.aspx

3.See下面的鏈接瞭解什麼是.WithRequired和.WithOptional選項

What part does the .WithRequired play in an EF Fluent API?

+0

非常感謝你! –