【问题标题】:Entity-Framework Select Queries wont return if Insert is happening如果发生插入,实体框架选择查询将不会返回
【发布时间】:2026-02-07 01:50:01
【问题描述】:

我在理解我遇到的问题时遇到了问题。目前我正在创建一个 ASP.net MVC 网站,该网站从 MSSQL 数据库中提取其信息。这似乎工作......有点。

如果没有 INSERT 语句也就是信息被添加到数据库中。然后一切顺利。信息加载,一切正常。

如果有一个 INSERT 查询运行插入 50000 + 条记录。然后我的 ASP.net 应用程序总是在加载信息时出现问题。即使 INSERT 查询是在完全独立的服务器上启动的。

我只是想知道是否应该使用某种方法来使用 asp.net 提取信息。就好像我只是通过 python 从我的角色机器运行查询一样。它也可以正常工作。

在使用 MVC 做实体框架和查询数据库时是否有特殊的预防措施

我正在使用实体框架并调用一个复杂的过程。

public List<VulnOverview_Result> getVulnOverview(string theDate, string theSite)
        {
            var vulnOverview = new List<VulnOverview_Result>();
            if(theDate == null)
                vulnOverview = entities.VulnOverview(null, theSite).ToList();
            else
                vulnOverview = entities.VulnOverview(Convert.ToDateTime(theDate), theSite).ToList();
            return vulnOverview;
        }

【问题讨论】:

  • ASP.NET MVC 不是数据访问技术。你用了什么? ADO.NET?实体框架? LINQ到SQL?还有什么?发布您的代码
  • 您可以在您的应用程序中允许脏读。否则,您的查询需要处理部分插入的数据。 . .等到插入完成是一种常见的方法。
  • @PanagiotisKanavos 我正在使用实体框架并发布了代码。它正在使用存储过程。
  • @GordonLinoff 我会调查一下情况

标签: asp.net sql-server asp.net-mvc entity-framework


【解决方案1】:

您可能正在遭受锁的困扰。开启 RCSI (Read Committed Snapshot Isolation) 即可解决问题。

在您的 SQL Server 中使用此指令:

ALTER DATABASE MyDB SET READ_COMMITTED_SNAPSHOT ON
GO

但是,您将只能返回已提交的记录。

【讨论】:

  • 我会试试这个。听起来很有希望
  • 谢谢。正是我需要的。