19

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()
4

9 に答える 9

12

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

于 2012-01-24T14:59:25.203 に答える
9

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

すなわち(以下にリンクされているガイドから)

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

私は通常、JulieLermanのガイドを使用します。https://msdn.microsoft.com/en-us/library/jj206878(v=vs.113).aspx

于 2013-01-21T13:22:23.440 に答える
8

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

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

于 2013-02-07T15:50:13.130 に答える
8

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

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

于 2012-12-06T09:32:37.797 に答える
2

さて、EF 4.1 をインストールして、DbContext を EMDX と結合しようとしました。ソリューション内の個別のアセンブリに...

于 2012-05-15T19:55:19.343 に答える
1

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

于 2014-02-04T21:29:19.093 に答える
0

edmxモデルを削除し、Entityパッケージを削除し、entity5.0を再インストールして動作します。

于 2013-01-04T20:56:04.070 に答える
0

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

于 2012-11-12T17:06:05.540 に答える