2013-03-06 16 views
24

こんにちはチュートリアルに基づいて三つのモデルを作成している私はEntity Frameworkのコードファーストで動作するように学んでいると私はsomething.Iを理解するように見えることはできません。理解コード最初の仮想プロパティ

public class Course 
{ 
    public int CourseID { get; set; } 
    public string Title { get; set; } 
    public int Credits { get; set; } 
    public virtual ICollection<Enrollment> Enrollments{ get; set; } 
} 

public class Enrollment 
{ 
    public int EnrollmentID { get; set; } 
    public int CourseID { get; set; } 
    public int StudentID { get; set; } 
    public decimal? Grade { get; set; } 
    public virtual Course Course { get; set; } 
    public virtual Student Student { get; set; } 
} 
public class Student 
{ 
    public int StudentID { get; set; } 
    public string LastName { get; set; } 
    public string FirstMidName { get; set; } 
    public DateTime EnrollmentDate { get; set; } 
    public virtual ICollection<Enrollment> Enrollments { get; set; } 
} 

を私の問題があることです私はバーチャルdo.Ifとプロパティを理解していない私は各プロパティの列枠は、他の人のためだけではないデータベースをチェックしてください。

だから、仮想キーワードでプロパティを作成するとどうなりますか?

答えて

31

それはと変更がを追跡遅延ロードを管理するために使用されます。

EFは、動的にPOCOクラスからその継承の種類を生成し、オーバーライドされた仮想プロパティに追跡遅延読み込み/変更を管理するために、すべてのEFのものを追加しているランタイムのプロキシタイプを、生成されます。

virtualはここでは「魔法のキーワード」ではありません。virtualはここにあり、実行時に追加のEF関連コードで継承できます。

3

virtualキーワードでマークされたプロパティまたはメソッドを作成すると、派生クラスでそのプロパティまたはメソッドをオーバーライドすることができ、作成するオブジェクトに応じてメソッドをより特殊な動作にすることができます。

Entity Frameworkの場合は、遅延読み込み動作が使用されていることを示す規則も使用されます。この件に関しての質問はここに存在している:Entity Framework 4.1 Virtual Properties

+2

Entity Frameworkを使用する場合は、それ以上のことがあります。これは、たとえば、Entity Frameworkの遅延読み込みメカニズムによって必要とされます。参照してください: http://stackoverflow.com/questions/7738722/entity-framework-4-1-virtual-properties –

+0

@Ravadreありがとう、私のポストを更新しました。 – Freeman

5

仮想プロパティができるようになっている遅延ロード

関連する問題