- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理一个大型项目(有许多不同的厨师制作汤,多年来过去了)并且刚刚发现了以下代码。
private IEnumerable<string> SomeSome()
{
using(DataModel context = DataModel())
{
context.SomeEntityName.AsNoTracking();
...
return context.SomeEntityName
.Where(entity => true)
.Select(entity => String.Empty);
}
}
现在,我已经对 AsNoTracking 方法和 it's clearly said 进行了三次检查返回与 EF 的跟踪工具无关的可查询对象。可以这么说,对于 ORM 来说,这是一种“即发即弃”。
注意到:
我想删除该行。但是,出于谦虚(即不怕破坏系统),我在删除任何内容之前都很谨慎。我的上下文中是否存在任何可能影响实体第二次检索的隐式更改?
我没有找到任何关于它的信息——无论是支持还是反对该理论。此外,我还没有找到 EF 5.0 以外的任何其他版本的文档(如上面的链接所示),但我们使用的是 EF 6.1.3,我知道所讨论的方法也存在于 EF 4 中。
最佳答案
如果那行代码与您的项目中的完全一样,则没有任何变化。
context.SomeEntityName.AsNoTracking();
这个 ^^^ 返回未保存在任何地方的可查询对象。如果您删除该行,则该行的查询将没有任何区别。
更新我查看了 EF 的源代码。据我所知,AsNoTracking()
不会更改您正在使用的 DbContext
对象的状态。因此,如果在一个查询上调用此方法,它应该不会影响其他查询的执行。如果是 - 这是 EF 中的错误,应该报告。在我的项目的多个地方,我有相同的 dbContext
查询,有跟踪和没有跟踪。一切都按预期进行。
来源:
关于c# - AsNoTracking() 背后是否有任何隐藏功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33019911/
本来我也这么认为 context.Configuration.AutoDetectChangesEnabled = false; 将禁用更改跟踪。但不是。目前,我需要在所有 LINQ 查询(对于我的只
我正在尝试使用这段代码从数据库中删除一行 public ListPicture GetPicture(string Id) { ListPicture pic = Pictures.AsNoTra
我正在处理一个大型项目(有许多不同的厨师制作汤,多年来过去了)并且刚刚发现了以下代码。 private IEnumerable SomeSome() { using(DataModel conte
我有一个关于 .AsNoTracking() 扩展的问题,因为这是全新的而且非常困惑。 我正在为网站使用按请求上下文。 我的很多实体都没有改变,所以不需要跟踪,但我有以下场景,我不确定数据库中有什么,
我有一个 Linq 查询来获取一个实体及其一些导航属性。 context.MyEntity .AsNoTracking() .Include(i=> i.Nav1) .Incl
我有一个关于 .AsNoTracking() 扩展的问题,因为这是全新的而且非常困惑。 我正在为网站使用按请求上下文。 我的很多实体都没有改变,所以不需要跟踪,但我有以下场景,我不确定数据库中有什么,
我需要来 self 的数据库的未经编辑的项目列表。它运行缓慢,所以我试图加快速度。 所以我将 AsNoTracking 添加到 LINQ 查询中,它运行得更慢了! 以下代码平均耗时 7.43 秒。 A
我正在将查询从 Linq-to-Sql 迁移到 EF。为了使禁用跟踪更难忘记,在 Linq-To-Sql 中,我编写了一个 ConfigureForQuery 包装函数,它只是将 ObjectTrac
抱歉我的英语不好 - 我在 WPF (.net 4.5) 应用程序中使用 EF 5 (Code First)。每个窗口都有自己的上下文。 我有一个这样的模型(为简洁起见省略了代码): public c
我想知道 Entity Framework 是否可以实现以下场景: 我想用选项 AsNoTracking 加载几个表,因为它们都像用户无法更改的静态表。 那些表也恰好是其他人的导航属性。到目前为止,我
所以我已经阅读了很多关于在 EF 中执行查询时使用 AsNoTracking() 的内容,特别是如果它返回实体,以便在您不更新时不要保留对事物的引用。 但我还读到 AsNoTracking 本身也可以
我有这样的实现: var query = this.DbContext.Set(); if (includeProperties != null && includeProperties.Any())
下面是我从数据库中获取信息的查询。从性能的角度来看,我想使用 AsNoTracking我的实体上的方法。 var teamrole = (from role in _context.USERROLEs
我已经设置了模拟数据库集,它读取一堆 json 文件并将它们反序列化为模拟数据库集。我将 AsNoTracking 添加到我的变量中有两个原因:1) 我将在数据库中存储一个新对象,并且不需要在更新条目
我有一个从大部分只读数据库中提取的 EF5 Code First 项目,因此我对绝大多数查询使用 .AsNoTracking() 以提高性能。 不过我很好奇:我有许多导航属性,有时了解它们是否已经加载
我有兴趣在我的 LINQ 选择查询中使用 AsNoTracking 来提高性能。我将 Entity Framework 5 与 Code First 结合使用。 但是,我的所有查询都是使用 LINQ
如何在查询 EF 上下文时将 Find() 与 AsNoTracking() 结合使用,以防止跟踪返回的对象。这是我做不到的 _context.Set().AsNoTracking().Find(i
我注意到可以通过三种不同的方式禁用跟踪: 通过上下文属性上的 AsNoTracking 在执行最终查询之前通过 AsNoTracking 通过 context.ChangeTracker.QueryT
在下面的片段中,我尝试使用 Anonymous Projection 获取数据,我不想跟踪获取的 entities。 注意:我已经解决了现有的堆栈问题,但无法为我找到有效的解决方案 using (va
我们目前正在为 Entity Framework 使用延迟加载并遇到内存不足异常。我们遇到此异常的原因是因为 Linq 查询加载了大量数据,并且在后期使用延迟加载来加载导航属性。但是因为我们不使用 N
我是一名优秀的程序员,十分优秀!