C# EDMX从数据库更新模型超时

C# EDMX从数据库更新模型超时,c#,sql-server,entity-framework,edmx-designer,C#,Sql Server,Entity Framework,Edmx Designer,我有一个MSSQL数据库,有大约3300个表(不要问为什么,那是Nav…)。 当我尝试在EDMX上“从数据库更新模型…”时,100次中有99次出现超时异常。 所以我的问题是,有没有办法改变超时时间? 我试图在连接字符串中设置“连接超时”,但它没有改变任何东西 我还尝试创建一个SQL帐户,只访问我需要的表(大约10个),但向导中的超时仍然存在。一个小的解决方法: 生成一个sql脚本,以便仅从数据库中创建所需的表 创建另一个数据库并执行sql脚本 从这个新数据库生成EDMX 更改EDMX的连接字符

我有一个MSSQL数据库,有大约3300个表(不要问为什么,那是Nav…)。 当我尝试在EDMX上“从数据库更新模型…”时,100次中有99次出现超时异常。 所以我的问题是,有没有办法改变超时时间? 我试图在连接字符串中设置“连接超时”,但它没有改变任何东西

我还尝试创建一个SQL帐户,只访问我需要的表(大约10个),但向导中的超时仍然存在。

一个小的解决方法:

  • 生成一个sql脚本,以便仅从数据库中创建所需的表
  • 创建另一个数据库并执行sql脚本
  • 从这个新数据库生成EDMX
  • 更改EDMX的连接字符串以连接到第一个DB

工作中有人帮了我这个忙

  • 运行SQL探查器并再次尝试更新模型
  • 捕获Visual Studio尝试运行的SQL查询。应该是这样的

    SELECT 
    [Project1].[C1] AS [C1], 
    [Project1].[CatalogName] AS [CatalogName], 
    [Project1].[SchemaName] AS [SchemaName], 
    [Project1].[Name] AS [Name]
    FROM ( SELECT 
        [Extent1].[CatalogName] AS [CatalogName], 
        [Extent1].[SchemaName] AS [SchemaName], 
        [Extent1].[Name] AS [Name], 
        1 AS [C1]
        FROM (
        SELECT
        quotename(TABLE_SCHEMA) + quotename(TABLE_NAME) [Id]
        ,   TABLE_CATALOG [CatalogName]
        ,   TABLE_SCHEMA [SchemaName]
        ,   TABLE_NAME    [Name]
        FROM
        INFORMATION_SCHEMA.TABLES
        WHERE
        TABLE_TYPE = 'BASE TABLE'
      ) AS [Extent1]
    )  AS [Project1]
    ORDER BY [Project1].[SchemaName] ASC, [Project1].[Name] ASC
    
  • 然后在SS管理工作室中运行查询。运行查询时,应缓存结果。当VisualStudio再次运行查询时,结果应该会很快返回,并且不会超时


  • 在同一个EDMX文件中是否确实需要3300个表?您使用哪些SQL Server和EF版本以及EF Tools版本?我没有说我的EDMX有3300个表,我说DB有3300个表,当向导尝试从DB获取表列表时会出现超时。因此,我甚至无法将表添加到EDMX。对不起,如果不清楚的话。啊,好的。不,连接超时没有帮助。无法在连接字符串中设置和命令超时。是否可以选择切换到“代码优先”(但实际上不是,即不迁移)?当数据库更改时,您必须手动同步EF模型。通常这并不太复杂。(此外,本机edmx支持将在EF 7中消失)。