我应该总是在N-Tier MVC App中使用AsNoTracking吗?

时间:2017-08-21 16:04:23

标签: c# asp.net-mvc entity-framework asp.net-core

在我的应用程序中,我有一个如图所示的基本架构:

RepositoryMethods (DO) --> BusinessEngines (DTO) --> Controller (ViewModel)

我喜欢将所有Entity Framework / DbContext访问代码保存在一个位置。我的Repository方法都注入了DbContext,并且都是API样式而不是通用存储库:

Task<Post> GetAllPostsInCategory(int categoryId);

因此,当实体(域对象)转换为数据传输对象然后转换为视图模型时,实体框架是否仍然可以跟踪它们,还是应该始终在每个Repository方法中使用.AsNoTracking()?在dot net core中,我认为这可以在全球范围内设置,我是否正确?

1 个答案:

答案 0 :(得分:1)

如果您只是简单地从API返回实体,那么您的上下文永远不会有机会跟踪任何内容。

但是,如果您要更新或删除任何数据,最好将其保留在