EDMX 从数据库更新模型超时

EDMX update model from database Timeout

我有一个 MSSQL 数据库,大约有 3300 个表(不要问为什么,那是 Nav...)。 当我在我的 EDMX 上尝试 "Update Model from Database..." 时,100 次中有 99 次出现超时异常。 所以我的问题是,有没有办法改变超时? 我试图在连接字符串中设置 "Connect Timeout",但它没有任何改变。

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

一个小的解决方法:

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

工作中有人帮我解决了这个问题。

  1. 运行 SQL 分析器并尝试再次更新您的模型。
  2. 捕获 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
    
  3. 然后 运行 SS Managment Studio 中的查询。当您 运行 查询时,结果应该被缓存。当 Visual Studio 运行 再次查询时,结果应该会很快返回并且不会超时。