C# 为什么缓存的实体突然跳转?
我有:C# 为什么缓存的实体突然跳转?,c#,linq,entity-framework,caching,lambda,C#,Linq,Entity Framework,Caching,Lambda,我有: var c = cboCustomer.SelectedItem as Customer; var t = cboTrailer.SelectedItem as Trailer; using (var db = new CAPSContainer()) { db.Attach(c); --> Tracker has now 1 entity db.Attach(t); --> Tracker has now 2 entities c.Trailers.Rem
var c = cboCustomer.SelectedItem as Customer;
var t = cboTrailer.SelectedItem as Trailer;
using (var db = new CAPSContainer())
{
db.Attach(c); --> Tracker has now 1 entity
db.Attach(t); --> Tracker has now 2 entities
c.Trailers.Remove(t); --> Tracker has now 29! entities loaded
db.DeleteObject(t);
db.SaveChanges();
}
我正试图了解这个加载/缓存是如何工作的,因为我有一些其他相关问题,你知道为什么缓存量突然增加吗
我使用的是EF 5.0。您的默认配置可能设置了LazyLoadingEnabled。因此,子列表在被访问之前不会被加载,请参阅本文以获得更详细的解释:
顺便说一句,如果你只是想在不装载货物的情况下移除一个拖车,那么你可以像布默说的那样使用DeleteObject。可能是因为它装载拖车是为了移除拖车。@JustinHarvey为什么要这样做,为什么是29?如果没有更多关于您使用的EF版本以及是否先使用代码或模型等的信息,就很难知道。您的数据库中已经存在Customer SelectedItem?它有多少预告片?因为当你说c.trailes时,它告诉dbcontext从数据库加载所有预告片,正如@JustinHarvey所说的