【问题标题】:Error selecting from large data table causing time out in EF + code first从大型数据表中选择时出错,导致 EF + 代码首先超时
【发布时间】:2013-12-09 20:12:58
【问题描述】:

我正在使用 EF 代码优先模型从我有 400,000 条记录的数据库表中获取数据。

但是当我使用 LINQ 查询时:

var urer = context.UserEntity.Where(c => c.FirstName.Contains('s'));

上面的语句给了我所有名字包含's'的用户。但由于这是一个巨大的数据库表,它给了我以下错误:

An existing connection was forcibly closed by the remote host

请给我建议最好的方法。我将此数据分配给gridview。我想每次都拿到前500个。有什么方法可以从 EF 端做到这一点,这样我就不需要在 sql 中做到这一点了。

谢谢

【问题讨论】:

    标签: asp.net-mvc linq ef-code-first


    【解决方案1】:

    1.在您的列上添加索引
    2.增加超时连接
    您可以创建存储过程 使用 LINQ 调用存储过程

    LINQ to SQL(第 6 部分 - 使用存储过程检索数据)
    http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

    也请参阅此答案 Calling a SQL Server stored procedure with linq service through c#

    【讨论】:

      【解决方案2】:
      1. 摆脱 EF
      2. 在 web.config 中设置密钥用于超时替换 600

        try
        {
         conn.Open();
         mySqlCommand.Connection = conn;
          mySqlCommand.CommandTimeout=600;
        

      【讨论】:

      • 我不能简单地摆脱 EF。我们已经在 EF 上构建了一个系统。
      • 对不起,我对EF很消极,只是增加超时连接。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 2017-11-26
      相关资源
      最近更新 更多