6

Tôi sử dụng EntityFramework POCO + proxy + tải chậm trong dự án của tôi. Hôm nay tôi đã khá ngạc nhiên khi thấy rằng lớp Transaction có bộ sưu tập có liên quan của nó Rows được thực hiện thành HashSet (thay vì EntityCollection). Tôi cần EntityCollection để theo dõi các thay đổi trong bộ sưu tập.Cấu trúc liên quan đến khung thực thể nhận được materialized thành HashSet

public class Transaction 
{ 
    public virtual ICollection<TransactionRow> Rows { get; set; } 
} 

Tuy nhiên các lớp thực thể khác có bộ sưu tập liên quan của chúng được vật chất thành EntityCollection.

Tôi đang tải Transaction đến ObjectQuery, vì vậy nó phải ở trong ngữ cảnh. Proxy cho đối tượng cũng được tạo.

Bất cứ ai có thể cho biết - làm cách nào để khung thực thể quyết định sử dụng gì - HashSet hoặc EntityCollection? Tại sao một số điều trở thành HashSets?

Trả lời

2

Change Proxy theo dõi được tạo ra chỉ khi hai điều kiện này được đáp ứng:

  • POCO class là công khai, không niêm phong và không trừu tượng
  • Tất cả tài sản (với phương thức getter và setter) vẫn kiên trì là được đánh dấu là ảo
+0

Ouch, tôi vừa kiểm tra lớp một lần nữa và nhận ra rằng bộ sưu tập không được đánh dấu là ảo :) Cảm ơn bạn đã gợi ý! – Jefim