Sử dụng khung Entity Mã Trước tiên, tôi có cái gì đó như:Tại sao thiết lập EntityState để tách rời một thuộc tính của danh sách loại <T>?
public class Foo
{
public int Id { get; set; }
public List<Bar> Bars { get; set; }
}
Foo foo = (from f in ctx.Foos.Include("Bars") where f.Id == 42 select f).Single();
// At this point foo.Bars is populated
ctx.Entry(foo).State = EntityState.Detached;
// At this point foo.Bars is an empty List
Tại sao tách một đối tượng gây ra đó là tài sản public List<string> Bars
, được một cách rõ ràng và thành công bao gồm, được làm trống?
Quy trình chính xác để tách đối tượng có thể có nhiều thuộc tính là gì?
Các DbContext đi ra khỏi phạm vi rất lâu trước khi đối tượng của tôi là bao giờ xử lý. Sẽ tải đối tượng của tôi với 'AsNoTracking()' cho phép DbContext được thu thập, hay đối tượng của tôi vẫn duy trì một tham chiếu đến nó? Đó là mối quan tâm chính của tôi. –
@EricJ .: Bạn đang sử dụng mã EF đầu tiên, do đó các thực thể của bạn là POCO. Nếu bạn không sử dụng tải chậm (và có vẻ bạn không vì 'Foo.Bars' không phải là' virtual') thì các thực thể không phải là proxy và chúng không có tham chiếu đến ngữ cảnh. Vì vậy, câu trả lời là có, ngữ cảnh sẽ được thu thập rác ngay cả khi bạn vẫn giữ một tham chiếu đến thực thể của bạn. – Slauma
Nếu các thực thể là proxy, thì ngữ cảnh sẽ không được thu gom rác cho đến khi các thực thể được xử lý? –