EF默认情况下对数据的访问都是启用模型跟踪
使用AsNoTracking方法查询返回无变动跟踪的Province的DbSet,由于是无变动跟踪,所以对返回的Province集中数据的任何修改,在SaveChanges()时,都不会提交到数据库中
- 无跟踪查询而已,也就是说查询出来的对象不能直接做修改。所以,我们在做数据集合查询显示,而又不需要对集合修改并更新到数据库的时候,一定不要忘记加上AsNoTracking。
|
|
- 如果查询过程做了select映射就不需要加AsNoTracking。如:db.Students.Where(t=>t.Name.Contains(“张三”)).select(t=>new (t.Name,t.Age)).ToList();
|
|
|
|
自定义标量函数
Entity Framework Core 有一个重要特性就是自定义标量函数。
自定义标量函数可以将数据库中的标量函数映射到类中的方法,并且在使用 LINQ 查询时会用到
我看例子他们还可以映射数据的函数Average
Max
Min
等
···
[DbFunction(FUNCTIONnAME=”sdf”,Schema=”dd”)]
public static string my()
{}
//调用
public int GetNextValId(string value)
{
return Context.DbpTask.Select(x => IngestTaskDBContext.next_val(value)).FirstOrDefault();
}
···
显式编译查询
一般的NoTracking()
查询,此时要经过编译翻译阶段最终返回实际结果,比如在Web网站上这样的请求很频繁,此时将严重影响响应速度导致页面加载数据过慢。
|
|
延时加载技术
用的时候才会加载