2013-03-06 30 views
24

Hi Tôi chỉ học tập để làm việc với khung Entity Mã đầu tiên và tôi dường như không thể hiểu something.I đã tạo ra ba mô hình dựa trên hướng dẫn:Hiểu đang tính ảo đầu tiên

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; } 
} 

Vấn đề của tôi là Tôi không hiểu những gì các thuộc tính với ảo do.If tôi kiểm tra cơ sở dữ liệu không có thùng cột cho mỗi thuộc tính, chỉ cho những người khác.

Vậy điều gì xảy ra khi bạn tạo thuộc tính với từ khóa ảo?

Trả lời

31

Nó được sử dụng để quản lý lười tảithay đổi theo dõi.

EF sẽ tạo ra loại proxy trên thời gian chạy, mà được tạo động loại mà kế thừa từ các lớp học POCO bạn và thêm tất cả những thứ EF để quản lý lười biếng tải/theo dõi trong tài sản ảo ghi đè thay đổi.

Vì vậy, virtual không phải là "từ khóa ma thuật" ở đây, virtual là ở đây để POCO của bạn có thể được thừa hưởng với mã bổ sung liên quan đến EF khi chạy.

3

Khi bạn tạo thuộc tính hoặc phương thức được đánh dấu bằng từ khóa ảo, bạn sẽ được phép ghi đè nó trong lớp dẫn xuất, do đó cung cấp phương thức của bạn một hành vi chuyên biệt hơn tùy thuộc vào đối tượng bạn tạo.

Trong trường hợp của khung thực thể, nó cũng là một quy ước chỉ ra rằng hành vi tải lười được sử dụng. Một câu hỏi liên quan đến vấn đề này tồn tại ở đây: Entity Framework 4.1 Virtual Properties

+2

Còn nhiều điều nữa khi làm việc với Khung thực thể. Đó là ví dụ cần thiết bởi cơ chế tải lười cho Entity Framework. Xem: http://stackoverflow.com/questions/7738722/entity-framework-4-1-virtual-properties –

+0

@Ravadre Cảm ơn, đã cập nhật bài đăng của tôi. – Freeman

5

tính ảo đang có để cho phép lười biếng tải

Các vấn đề liên quan