我正在编写一些代码来使用EntityFrameWork访问数据库.代码是:
public IEnumerable<Rows> GetRows(int id)
{
using (var context = new ApplicationDbContext())
{
var repository = new EntityFrameWorkRepository<int, RowEntity>(context);
//need a ToList() here to prevent disposed dbcontext errors
return repository.GetRowsFromDb(id).ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
GetRowsFromDb()使用LINQ查询数据库并使用id过滤结果.
我最初在没有ToList()调用的情况下编写了上面的方法,但是当我尝试访问返回的IEnumerable中的对象时,我会得到一个关于dbcontext已被处置的异常.我不明白上面的代码如何解决问题,虽然它确实有效.我假设ToList()深度复制对象,这可能提供了与上下文/数据库的必要分离,但是原始对象肯定可以使用吗?