Entity framework 更新向导没有响应

Entity framework 更新向导没有响应,entity-framework,edmx,Entity Framework,Edmx,每次我需要从数据库更新emdx时,更新向导都会花费大量的时间来完成此操作,一旦您点击finish(完成更新)按钮,就会显示自己没有响应 我使用Visual Studio 2015和LocalDb SQL Server 2014。一些人建议安装Service Pack 1以解决此问题。我已经为LocalDb安装了SP1,但没有任何帮助。我安装的VS2015也相当新 我有最新的Entity Framework 6版本(来自nuget)。将数据库的兼容性级别设置为110对我来说很有效 要检查兼容性级别

每次我需要从数据库更新emdx时,更新向导都会花费大量的时间来完成此操作,一旦您点击finish(完成更新)按钮,就会显示自己没有响应

我使用Visual Studio 2015和LocalDb SQL Server 2014。一些人建议安装Service Pack 1以解决此问题。我已经为LocalDb安装了SP1,但没有任何帮助。我安装的VS2015也相当新


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

将数据库的兼容性级别设置为110对我来说很有效

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

select compatibility_level from sys.databases where name = '<YOUR_DB_NAME>'
alter database <YOUR_DB_NAME> set compatibility_level = 110
从sys.databases中选择兼容性级别,其中name=''
要设置兼容性级别,请使用以下脚本:

select compatibility_level from sys.databases where name = '<YOUR_DB_NAME>'
alter database <YOUR_DB_NAME> set compatibility_level = 110
alter数据库集兼容性\u级别=110

更改SQL Server兼容性级别或跟踪标志9481对我来说是没有选择的

我尝试了一下EntityFramework反向POCO生成器

这是一个可配置的通用T4模板,迄今为止运行良好

它甚至有一个选项用于上述跟踪标志

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

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

今天,我的同事和我不使用向导,让它更新约10分钟。虽然花了很长时间,但还是完成了。这是我们(目前)的最佳解决方案,因为如果没有适当的权限,我们无法设置数据库的兼容性级别

在DB上运行以下命令对我很有效:

ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION=ON
然后,在更新后,使用以下命令将其设置回原位:

ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION=OFF
这是Github上的EF6回购协议

需要注意的是,该线程中还报告了以下内容,尽管我没有对其进行测试,因为前者对我非常有效:

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

他们还将这一点反馈给SQL Server团队,并在Microsoft Connect上开放。

I仍然必须使用
Microsoft SQL Server 2014(SP2-GDR)(KB4019093)-12.0.5207.0(X64)2017年7月3日02:25:44版权所有Windows NT 6.3上的Microsoft Corporation标准版(64位)(Build 9600:)(Hypervisor)
使用实体框架6.2.0。这个问题到底是怎么解决的?!

MariaDB昏睡的手动补救方法
  • 使用EF6、VisualStudio 2015和MariaDB 10.2
  • 正如@Santhos所指出的,这为我浪费了大量的时间。VisualStudio似乎在解析那个巨大的XML文件方面很慢(我的开发机器只有8gb的RAM)。不开玩笑,大约需要15分钟来刷新
  • 我了解到,手动“重置”几个文件,然后继续进行GUI更新,很快就解决了我的问题。我可以在1-2分钟内使用闪亮的新型号
手动刷新步骤
  • .edmx.diagram
    文件的内容替换为下面的edmx图表样板文件
  • .edmx
    文件的内容替换为下面的edmx运行时样板文件
  • 返回到VisualStudio,双击您的EDMX>,在空屏幕中右键单击>从数据库更新模型
  • EDMX图表样板
    
    
    EDMX运行时样板
    发生这种问题的原因通常是运行SQL server自身的服务器状况不佳。 可能服务器上的磁盘空间或内存太少,无法完成任务


    检查运行数据库的服务器。

    此处与Visual Studio 2015和real SQL server相同2014@jens您解决了这个问题吗?我们认为这是由于SQL Server 2014中基数估计器的回归。我们之前在EF工具中引入了一个解决方案,该解决方案包括附加选项(QUERYTRACEON 9481)到所有模式查询(有关更多详细信息,请参阅),但不幸的是,这引入了功能性回归,例如,如果用户对数据库没有足够的权限,架构查询开始失败,因此我们不得不采取变通办法。回归似乎已得到修复,但最近我们有了新的报告。我们正在跟进SQL Server。@divega有任何关于修复的更新吗?以下是问题sue tracker在EF和SQL 2016中也遇到了同样的问题:。有些人报告说,
    更新统计信息
    命令会有所帮助……是的,它确实起作用,但需要很长时间。@Santhos是的,这很烦人。前几天我花了约30分钟更新一个大型模型。相当令人沮丧。我的命令已经运行了大约一个小时,我只想添加一个1个表(这是初始设置)。典型的“停车问题”,但我想我现在就放弃它了……唉。我想我的原始值是120,但自从我做这个操作以来已经有一段时间了。我还相信原始值可能会因您使用的本地sql版本而异。对我来说,这非常有吸引力。有人能解释一下为什么我们必须设置兼容级别吗到110?是否有任何副作用?我得到了以下信息:数据库兼容性级别的有效值是80、90或100。我应该选择什么?@Waheed查看divega评论中的问题评论这对我来说适用于Visual Studio 2015更新3和SQL Server 2014(12.0.2000)。这对我有效。请注意:接受的答案设置了数据库兼容性级别。我相信将其设置为110将设置