データベースからemdxを更新する必要があるたびに、更新ウィザードは、完了(更新の完了)ボタンを押すと応答しないと表示されるため、信じられないほどの時間がかかります。
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
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で この問題 を明らかにしました。
今日、同僚と私はウィザードをそのままにして、〜10分間更新しました。かなり時間がかかりましたが、完了しました。適切な権限がないとDBの互換性レベルを設定できないため、これが(現時点では)私たちにとって最適なソリューションです。
SQL Serverの互換性レベルまたはトレースフラグ9481を変更するオプションはありません。
EntityFramework Reverse POCO Generatorを試してみました。
https://visualstudiogallery.msdn.Microsoft.com/ee4fcff9-0c4c-4179-afd9-7a2fb90f5838
これは構成可能な汎用T4テンプレートであり、現在まで非常にうまく機能します。
上記のトレースフラグのオプションもあります。
IncludeQueryTraceOn9481Flag = false; // SqlServer 2014がフリーズしているように見える場合、またはこのファイルの保存に時間がかかる場合は、これをtrueに設定してみてください(昇格した権限も必要です)。
皮肉なことに、フラグがオフの場合でも高速に動作します:) VS EF Designerと比較して、メタデータに異なるクエリを使用しているようです。
I still 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)
でこれを行う必要がありました。これはどのようにしてまだ解決されていないのですか?!
.edmx.diagram
ファイルの内容をEDMX Diagram Boilerplate以下で置き換えます.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 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>