每次我需要从数据库更新我的emdx时,更新向导需要花费大量时间才能在完成更新(完成更新)按钮后将其自身呈现为无响应。
我使用Visual Studio 2015和LocalDb SQL Server 2014.有人建议安装Service Pack 1来解决此问题。我已经为LocalDb安装了SP1,但它没有帮助。我的VS2015安装也很新。
我有最新的Entity Framework 6版本(来自nuget)。
答案 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)
.edmx.diagram
文件的内容.edmx
文件的内容<?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>
<?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实例。不是很遥远。