Entity framework EF Core 2.0通用数据库集没有方法AsNoTracking
我正在尝试实现中所述的通用存储库 似乎泛型DbSet没有方法AsNoTracking()的实现,我是否使用了正确的语法?如何解决这个问题Entity framework EF Core 2.0通用数据库集没有方法AsNoTracking,entity-framework,ef-core-2.0,Entity Framework,Ef Core 2.0,我正在尝试实现中所述的通用存储库 似乎泛型DbSet没有方法AsNoTracking()的实现,我是否使用了正确的语法?如何解决这个问题 public class BaseRepository<TEntity> : IGenericRepository<TEntity> where TEntity : class { private readonly DbContext _dbContext; public BaseRepository(DbCo
public class BaseRepository<TEntity> : IGenericRepository<TEntity>
where TEntity : class
{
private readonly DbContext _dbContext;
public BaseRepository(DbContext dbContext)
{
_dbContext = dbContext;
}
public IQueryable<TEntity> GetAll()
{
return _dbContext.Set<TEntity>().AsNoTracking();
}
}
公共类基存储库:IGenericRepository
地点:班级
{
私有只读dbcontextu DbContext;
公共基本存储库(DbContext DbContext)
{
_dbContext=dbContext;
}
公共IQueryable GetAll()
{
返回_dbContext.Set().AsNoTracking();
}
}
这里没有什么需要修复的。AsNoTracking
方法仅以一种方式配置查询,即一旦对其进行枚举,它将不会跟踪这些实体上的更改。
这在执行只读操作时非常有用,并且不会在该过程中进行任何编辑。这样做是为了速度和效率。
因此,该方法没有可以异步的功能
枚举查询时将使用异步方法,如:ToListAsync()
或SingleOrDefaultAsync()
AsNoTracking
是一种扩展方法,需要使用Microsoft.EntityFrameworkCore代码>。但是DbContext
是在同一名称空间中定义的,因此您应该可以使用该方法。