可以说我有一个播放列表类与一些引用的类。 播放列表实体集合被放置到数据上下文包装:为什么实体框架V1使用SELECT多次访问数据库,而实体已经被加载?
public new IQueryable<Playlist> Playlist
{
get
{
return base.Playlist
.Include("PlaylistStep")
.Include("PlaylistStepAttachment");
}
}
上下文是在每个Web请求的基础应用组件之间共享。 第一次调用播放列表的实体的样子:
var playlist =
dataContext
.Playlist
.Where(x => x.OwnerUserId == ownerId)
.OrderBy(x => x.Name)
.Skip((page - 1) * count)
.Take(count)
.ToList();
这会产生相应的SQL语句,并加载一些播放列表到背景下,据我了解。然后在相同的Web请求我有几个电话:
var playlist = dataContext
.Playlist
.Where(x => x.PlaylistId == id)
.FirstOrDefault();
其中播放列表ID是一样的第一个请求过程中得到。 令我惊讶的是后续的调用也会生成SQL语句,尽管这些实体已经加载到上下文中。我相信已经在上下文中的实体应该返回,而不是由DB再次检索。
可以请别人告诉我我错在哪里,或者这种行为对EF来说是正常的吗?
对这个问题不知道多少。但知道EF ** V1 **有很多问题,这就是为什么我们有** EF4 ** – gideon 2011-03-18 16:58:42