更新向导没有响应

时间:2015-09-21 16:49:02

标签: entity-framework edmx

每次我需要从数据库更新我的emdx时,更新向导需要花费大量时间才能在完成更新(完成更新)按钮后将其自身呈现为无响应。

我使用Visual Studio 2015和LocalDb SQL Server 2014.有人建议安装Service Pack 1来解决此问题。我已经为LocalDb安装了SP1,但它没有帮助。我的VS2015安装也很新。

我有最新的Entity Framework 6版本(来自nuget)。

8 个答案:

答案 0 :(得分:75)

将数据库的兼容级别设置为110对我有用。

要检查兼容级别,请运行以下脚本:

select compatibility_level from sys.databases where name = '<YOUR_DB_NAME>'

要设置兼容级别,请使用以下脚本:

alter database <YOUR_DB_NAME> set compatibility_level = 110

答案 1 :(得分:20)

在DB上运行以下代码对我有用:

ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION=ON

然后,在更新后,使用以下命令将其设置为:

ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION=OFF

这是在Github的EF6回购中每this thread个结束。

应该注意的是,虽然我没有对它进行过测试,但是该线程也会报告以下内容,因为前者对我来说效果很好:

UPDATE STATISTICS sys.syscolpars
UPDATE STATISTICS sys.sysschobjs
UPDATE STATISTICS sys.syssingleobjrefs
UPDATE STATISTICS sys.sysiscols

他们还将此问题反馈给了SQL Server团队,并在Microsoft Connect上打开了this issue

答案 2 :(得分:2)

今天,我的同事和我离开了巫师,让它更新约10分钟。虽然花了很长时间,但它确实完成了。这是我们(现在)的最佳解决方案,因为我们无法在没有适当权限的情况下设置数据库的兼容级别。

答案 3 :(得分:1)

更改SQL Server兼容级别或trace-flag 9481对我来说是不可取的。

我尝试了 EntityFramework Reverse POCO Generator

https://visualstudiogallery.msdn.microsoft.com/ee4fcff9-0c4c-4179-afd9-7a2fb90f5838

它是一个可配置的通用T4模板,直到现在都运行良好。

它甚至有上述跟踪标志的选项

  

IncludeQueryTraceOn9481Flag = false; //如果SqlServer 2014出现冻结/保存此文件需要很长时间,请尝试将其设置为true(您还需要提升权限)。

具有讽刺意味的是,即使标志关闭,它也能快速运行:) 似乎与VS EF Designer相比,他们使用不同的元数据查询。

答案 4 :(得分:1)

仍然必须使用Entity Framework 6.2.0与Microsoft SQL Server 2014 (SP2-GDR) (KB4019093) - 12.0.5207.0 (X64) Jul 3 2017 02:25:44 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)进行此操作。这个世界怎么还没有解决?!

答案 5 :(得分:0)

MariaDB Lethargic手册补救措施

  • 使用EF6,VisualStudio 2015对抗MariaDB 10.2。
  • 就像@Santhos指出的那样,为我吹走了大量的时间。似乎VisualStudio在解析那个巨大的XML文件时很慢(我的开发机器只有8GB RAM )。不开玩笑,约15分钟刷新。
  • 我了解到手动重置&#39; 几个文件,然后通过GUI更新继续快速解决方法。我进出闪亮的新模特〜1-2分钟。

手动刷新步骤

  1. 使用下面的 EDMX Diagram Boilerplate 替换.edmx.diagram文件的内容
  2. 使用下面的 EDMX Runtime Boilerplate 替换.edmx文件的内容
  3. 返回VisualStudio,双击您的EDMX&gt;在空屏幕中右键单击&gt; 从数据库更新模型
  4. EDMX Diagram Boilerplate

    <?xml version="1.0" encoding="utf-8"?>
    <edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
     <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
      <edmx:Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">
        <!-- Diagram content (shape and connector positions) -->
        <edmx:Diagrams>
          <Diagram DiagramId="820459acb0f543cfaf7db8643f38c2d6" Name="Diagram1" ZoomLevel="85">
            </Diagram>
        </edmx:Diagrams>
      </edmx:Designer>
    </edmx:Edmx>
    

    EDMX Runtime Boilerplate

    <?xml version="1.0" encoding="utf-8"?>
    <edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
      <!-- EF Runtime content -->
      <edmx:Runtime>
        <!-- SSDL content -->
        <edmx:StorageModels>
        <Schema Namespace="ShareDirectModel.Store" Provider="MySql.Data.MySqlClient" ProviderManifestToken="5.5" Alias="Self" xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm/ssdl">
            <EntityContainer Name="ShareDirectModelStoreContainer">
              </EntityContainer>
          </Schema></edmx:StorageModels>
        <!-- CSDL content -->
        <edmx:ConceptualModels>
          <Schema Namespace="ShareDirectModel" Alias="Self" annotation:UseStrongSpatialTypes="false" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
            <EntityContainer Name="ShareDirectContext" annotation:LazyLoadingEnabled="true">
              </EntityContainer>
            </Schema>
        </edmx:ConceptualModels>
        <!-- C-S mapping content -->
        <edmx:Mappings>
          <Mapping Space="C-S" xmlns="http://schemas.microsoft.com/ado/2009/11/mapping/cs">
            <EntityContainerMapping StorageEntityContainer="ShareDirectModelStoreContainer" CdmEntityContainer="ShareDirectContext">
              </EntityContainerMapping>
          </Mapping>
        </edmx:Mappings>
      </edmx:Runtime>
      <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
      <Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">
        <Connection>
          <DesignerInfoPropertySet>
            <DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" />
          </DesignerInfoPropertySet>
        </Connection>
        <Options>
          <DesignerInfoPropertySet>
            <DesignerProperty Name="ValidateOnBuild" Value="true" />
            <DesignerProperty Name="EnablePluralization" Value="true" />
            <DesignerProperty Name="IncludeForeignKeysInModel" Value="true" />
            <DesignerProperty Name="UseLegacyProvider" Value="false" />
            <DesignerProperty Name="CodeGenerationStrategy" Value="None" />
            <DesignerProperty Name="DDLGenerationTemplate" Value="$(VSEFTools)\DBGen\SSDLToMySQL.tt" />
          </DesignerInfoPropertySet>
        </Options>
        <!-- Diagram content (shape and connector positions) -->
        <Diagrams></Diagrams>
      </Designer>
    </edmx:Edmx>
    

答案 6 :(得分:-1)

我们遇到了相同的问题,并设法解决了该问题。

首先要检查的是运行自身SQL Server的服务器。 服务器上的磁盘空间或内存可能太少而无法完成任务。

从永久使用(VS仅挂起12个小时)开始,现在只需要2分钟。

我们的IDE是VS Community 2017和VS Community 2019。 我们的SQL Server版本为2012。

答案 7 :(得分:-5)

检查web.config以获取本地sql实例。不是很遥远。