在使用EF4的通用存储库时,我遇到了一些问题。首先让我向您展示我用来访问对象集合的代码(这是通用reposiroy中的代码):
public IEnumerable<T> FindAll<T>() where T : class
{
return ObjectContext.CreateObjectSet<T>();
}
下面是为Book
类型的存储库调用此代码的示例_returnedBooks = _dataContext.FindAll<Book>()
.Where(b => b.Title == _editedtitle && b.Description == _editedDescription && b.ImageUrl == _editedImageUrl);
上面的代码显示我查询了一本书的数据上下文,该书的属性与我以前用于编辑书籍的值相匹配(因此是_edited前缀)。但是一旦我编辑了本书,我就没有在数据上下文中调用Save Changes。
有问题,即使我没有保存更改,FindAll(在本案例书中)也会返回带有编辑值的书。但是,当我检查DbSet(需要注册该类以用于Code First)时,它不在该集合中。
所以,我没有设法找到这种行为的任何文档,或者我自己是否错过了明显的文档。
帮助meeeeeeeeeeeeeeeeeeeeeeeeeeeee:)
答案 0 :(得分:1)
您使用的是同一个DataContext吗?无论您是否调用了SaveChanges(),DataContext都会缓存未提交的更改并在后续查询中返回它们。如果您想避免检索未提交的修改,则需要新建一个新的或备用的上下文。