c# - 我应该始终在 N 层 MVC 应用程序中使用 AsNoTracking 吗?

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

<分区>

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

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

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

Task<Post> GetAllPostsInCategory(int categoryId);

因此,当实体(域对象)被转换为数据传输对象,然后转换为 View 模型时, Entity Framework 是否仍然可以跟踪它们,或者我应该始终在每个存储库方法中使用 .AsNoTracking() ?在 dot net core 中,我认为这可以全局设置,对吗?

最佳答案

如果您从 API 返回实体是有意义的,因为您的上下文将永远没有机会跟踪任何东西。

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

关于c# - 我应该始终在 N 层 MVC 应用程序中使用 AsNoTracking 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45801492/

相关文章:

mysql - 在以下情况下是否有办法维护数据库关系(pk/fk)

c# - 我应该如何正确命名 "umbrella"类型?

c# - 解析中缀表达式,同时将分隔符保留为数组元素

c# - MySQL 数据库的 .Net 中的日期时间格式

c# - 有什么快速方法可以将简单的身份验证添加到一些 ASP.NET MVC 路由,而无需实现整个成员(member)提供程序 jazz?

c# - 无法运行启用迁移 VS2013 SP4

c# - 代码优先迁移 : How to set default value for new property?

c# - EF Core 的 HasColumnName 发生了什么变化?

c# - NOSQL数据库选型论坛

asp.net-mvc - AsyncController 如何避免使用 ASP.NET 工作线程?