web-dev-qa-db-ja.com

概念モデルタイプが見つかりませんでした

MVC3プロジェクトAとB内に2つのエンティティデータモデルがあります。

最近、いくつかの新しい機能を処理するために新しいエンティティデータモデルBを追加しました。問題は、既存のコードが機能しなくなり、エンティティモデルA内のコードにアクセスしようとすると次のエラーが発生することです。

エラーメッセージは次のとおりです。

概念モデルタイプ 'project.models.Bclass'が見つかりませんでした

エンティティモデルAはまったく変更されていないため、この新しい機能が現在のコードに影響を与えた理由がわかりません。また、機能Bは別のクラスにあり、モデルAに干渉しません。

新しいコードがプロジェクトから削除され、エンティティモデルBが除外されると、コードは正常に機能します。

エラーからのスタックトレースの一部を次に示します。

Exception : Could not find the conceptual model type for 'Project1.Models.CrossSession'.
Application Class - method : System.Data.Metadata.Edm.MetadataWorkspace -- GetEdmSpaceType
User : temp.user
Url : http://localhost/project1/auth/message
Stacktrace :    at System.Data.Metadata.Edm.MetadataWorkspace.GetEdmSpaceType(StructuralType objectSpaceType)
   at System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappings()
   at System.Data.Entity.Internal.InternalContext.TryUpdateEntitySetMappingsForType(Type entityType)
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
17
Matt Seymour

解決策が見つかりました。場合によっては(ランダムに)entity frameworkによって生成されたコードに取り違えがあるように見えます。これは明らかに既知のバグであり、将来のリリースで修正される予定です。それまでの間、これを回避する方法は、efmをソリューション内の別のクラスに移動することです。

12
Matt Seymour

EntityFrameworkを最新バージョン(6.0)に更新することでこれを解決しました http://nuget.org/packages/EntityFramework/

インストール後、モデルを再生成すると機能します;)

8
Paul0PT

同じプロジェクト内の2つの異なる.edmxファイルで同じ問題が発生しました。最初の.edmx modelには"Add Code Generation Item"を使用し、2番目のモデルには使用しませんでした。プロジェクトは正しくビルドされていましたが、実行時にその例外がスローされました。

2番目の.tt.edmx modelクラスの生成も解決しました。

8
Vland

考えられる理由の1つは、データベースファーストのアプローチを使用し、エンティティクラスの追加を忘れると、このエラーが発生することです。

つまり(以下にリンクされているガイドから)

  1. モデルのデザイナサーフェスを右クリックします。
  2. コンテキストメニューから、[コード生成アイテムの追加]を選択します。
  3. 開いた[新しいアイテムの追加]ダイアログで、左側にあるインストール済みテンプレートタイプのリストから[データ]を選択します。
  4. ADO.NET DbContext Generatorを選択し、[追加]ボタンをクリックします。

私は通常、ジュリーラーマンのガイドを使用します。 https://msdn.Microsoft.com/en-us/library/jj206878(v = vs.113).aspx

8
shawad

EF 4.1をインストールし、DbContextをEMDXと組み合わせようとしました-ビューを返そうとすると同じエラーが発生しました-それが私がここにたどり着いた理由です...これを回避する方法は機能を分離することだと思いますソリューション内の別々のアセンブリに...

2
Craig D

これは、Visual Studio 2010で新しいedmxを生成して、古いedmxと一致させることでも解決できます...(そして、生成されたファイルをコピーします)

1
Ryan Sampson

Edmxモデルを削除し、エンティティパッケージを削除し、エンティティ5.0を再インストールして動作します。

0
Felipe FMMobile

Visual Studio 12を使用しても、問題はまだ解決されていません。別の回避策として、エンティティモデルよりも前の「昔ながらの」データクラスを使用して2番目のSQLデータモデルを設定しました。これらはまだ存在し、引き続き機能します。 [追加]-[新しいアイテム]-(データカテゴリ)-[LINQ To SQLクラス]を使用して、ServerExplorerを開き、サーバーとデータベースを見つけて、データクラスペインにドラッグアンドドロップします。古い学校ですが、エンティティモデルの全機能が必要ない場合は、この非常に不便な問題を簡単に克服できます。

0
Graham Laight