Trong ASP NET MVC 3 với Entity Framework, tôi có một đối tượng miền trong đó có một tài sản chuyển hướng tham khảo đối tượng khác, như sau:Làm thế nào để cập nhật các thuộc tính định hướng của một thực thể trong Entity Framework
public class Person
{
public String Name {get;set;}
public Guid CompanyID{get;set;}
[ForeignKey(CompanyID)]
public virtual CompanyType Company{ get; set; }
}
Khi tôi tạo một cá thể của Person và cố gắng thêm nó vào cơ sở dữ liệu, DBContext giữ một bộ nhớ cache của thực thể này là 'Person' và gửi nó đến cơ sở dữ liệu. Vì vậy, sau này trong cuộc đời của cùng một bối cảnh, khi tôi cố gắng truy cập thực thể này, trường Công ty luôn luôn là rỗng vì thuộc tính điều hướng không bao giờ được cập nhật.
Có cách nào để cập nhật thuộc tính điều hướng với những gì tồn tại trong cơ sở dữ liệu không?
Tải trọng lười được bật.
Điều này yêu cầu chương trình tải lại rõ ràng mọi thuộc tính điều hướng tồn tại. Có cách nào để thực hiện một cái gì đó cơ bản hơn, để tải lại tất cả các thuộc tính navigatio cho bất kỳ mục thực thể nào? Tôi đã thử chức năng Reload cho DbEntityEntry nhưng điều đó dường như không hoạt động. – daniely
@daniely: Không, điều đó là không thể. Cách duy nhất với một DB rountrip đơn sẽ là sử dụng tải háo hức với nhiều 'Bao gồm' để tải tất cả các thuộc tính chuyển hướng. Nhưng điều này sẽ tải thực thể cha mẹ là tốt và bạn phải viết 'Bao gồm' cho tất cả các thuộc tính chuyển hướng bằng tay. – Slauma
@Slauma Khi sử dụng context.People.Include (p => p.NavProp1) .Include (p => p.NavProp2) Tôi có thể chain-load một số thuộc tính navigaton tạo một hit duy nhất cho DB. Có cách nào tương tự để tải một số thuộc tính điều hướng với context.Entry (người) .Reference (...)? Tôi không thể tìm ra một cách để xác định tất cả các thuộc tính nav vì vậy tôi chỉ có thể gọi Load() một lần. –