【发布时间】:2017-07-02 22:05:47
【问题描述】:
我正在阅读有关实体框架和附加方法的 Microsoft 文档,我复制了下面需要帮助理解的行:
“如果你有一个你知道数据库中已经存在但当前没有被上下文跟踪的实体,......” 现在我有一些问题:在什么情况下和实体可能不会被上下文跟踪?实际上,当我们说“跟踪”时,它是什么意思? 谢谢
【问题讨论】:
标签: frameworks entity dbcontext
我正在阅读有关实体框架和附加方法的 Microsoft 文档,我复制了下面需要帮助理解的行:
“如果你有一个你知道数据库中已经存在但当前没有被上下文跟踪的实体,......” 现在我有一些问题:在什么情况下和实体可能不会被上下文跟踪?实际上,当我们说“跟踪”时,它是什么意思? 谢谢
【问题讨论】:
标签: frameworks entity dbcontext
在什么情况下和实体可能不会被上下文跟踪?
当您将 AsNoTracking() 放入 LINQ 时,它不会被跟踪。 AsNoTracking() 是我们用来提高查询性能的方法之一。如果您使用 AsNoTracking(),您将获得显着的性能。 有时您可能希望从查询中取回实体,但不让上下文跟踪这些实体。在只读场景中查询大量实体时,这可能会带来更好的性能。请参阅微软官方文档(https://msdn.microsoft.com/en-us/data/jj556203)
其实,我们说“track”是什么意思?
实体框架检查您是否对数据进行了任何更改并保存。实体框架将有一个跟踪机制为您处理。这是一篇 Microsoft 文章,讨论何时使用 track 以及何时不使用 trak。 https://docs.microsoft.com/en-us/ef/core/querying/tracking
【讨论】: