EF之DetectChanges()、AutoDetectChangesEnabled()、SaveChanges()
一、AutoDetectChangesEnabled():用于操作EF模型集合时,出于性能考虑,所以在批量操作的时候需要把自动跟踪关闭,
具体用法如下:
(仓储模式中,此方法针对单个仓储中的模型操作)
try
{
context.Configuration.AutoDetectChangesEnabled = false;
foreach (var p in mfpCustomers)
{
db.Customers.Add(p);
}
}
finally
{
context.Configuration.AutoDetectChangesEnabled = true;
}
二、DetectChanges():同步对象与其属性的状态。
AutoDetectChangesEnabled:自动跟踪对象的属性变化,默认为true。
如果AutoDetectChangesEnabled=true,那么对象与其属性的状态会自动立即同步,因此可直接调用SaveChanges();
反之,如果AutoDetectChangesEnabled=false,则需手动调用DetectChanges()后,再调用SaveChanges()才会生效。
三、AcceptAllChanges():上下文能跟踪状态为Added、Modified、Deleted的所有对象,修改他们的状态为Unchanged。在SaveChanges()失败时不 会调用该方法。
四、SaveChanges():
1.只有当AutoDetectChangesEnabled=true,ValidateOnSaveEnabled=false的情况下,在保存之前才会调用DetectChanges()
2.当保存成功后,始终都会调用AcceptAllChanges()
参考:
http://www.cnblogs.com/happyframework/p/3590112.html
https://www.cnblogs.com/ceci/p/4381075.html
https://stackoverflow.com/questions/9439430/improving-performance-of-initializing-dbset-in-seed
http://www.cnblogs.com/guomingfeng/archive/2013/05/28/mvc-ef-repository.html#autoid-1-0-0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端