Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我是否应该显式地处理从一个表中读取的dbContext,而这个表中没有任何内容可以写入?_C#_Entity Framework_Dbcontext - Fatal编程技术网

C# 我是否应该显式地处理从一个表中读取的dbContext,而这个表中没有任何内容可以写入?

C# 我是否应该显式地处理从一个表中读取的dbContext,而这个表中没有任何内容可以写入?,c#,entity-framework,dbcontext,C#,Entity Framework,Dbcontext,我创建了一个通过EFdbContext读取单个表的服务 dbContext是基于给定的连接字符串在此服务中创建的 dbContext是私有的 该服务以独占方式从该表读取数据,从不向其写入数据 没有其他上下文使用此表,尽管它们使用同一数据库中的其他表 此表不包含任何外键 问题:考虑到以上所有内容,我是否应该使用using语句来处理此服务中的上下文?若有,原因为何 我不想非得这么做,因为这会使测试复杂化,但如果必须这样做,我会尽一切努力去做。总是尽可能晚地初始化上下文,并尽快处理它。如果不这样做

我创建了一个通过EF
dbContext
读取单个表的服务

  • dbContext
    是基于给定的连接字符串在此服务中创建的
  • dbContext
    是私有的
  • 该服务以独占方式从该表读取数据,从不向其写入数据
  • 没有其他上下文使用此表,尽管它们使用同一数据库中的其他表
  • 此表不包含任何外键
问题:考虑到以上所有内容,我是否应该使用
using
语句来处理此服务中的上下文?若有,原因为何


我不想非得这么做,因为这会使测试复杂化,但如果必须这样做,我会尽一切努力去做。

总是尽可能晚地初始化上下文,并尽快处理它。如果不这样做,上下文将继续增长,并可能开始表现为内存泄漏,最终导致内存问题

为此,请使用
using
语句;或者,如果使用DI框架,则使用在每个web请求或类似请求之后结束的生命周期

另见:


“它使测试更加复杂”绝对不是不遵循最佳实践的理由。我也不知道你的意思。

我不想这样做,因为这会使测试变得非常复杂
你能给我们举一个这样的测试的例子,只是为了确认没有一种方法可以不使测试变得非常复杂吗?我认为,使用EF读取单个表有点过火。如果您总是使用
AsNoTracking()
进行读取,并且从不从多个线程使用它,那么在这种情况下您应该不会有问题。只是想一想,但是如果这是一种严格的只读访问,为什么要使用EF呢?在这样的用例中,我通常只使用Dapper来选择数据。如果它使用连接池,则不会建立新连接