問題タブ [edmx-designer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
38 参照

entity-framework - Entity Framework はデータベースから外部キーを検出しません

と の 2 つのテーブルがAppointmentありUserます。予定は、学生と職員の 2 人の異なるユーザーにリンクできます。テーブルには、 とのAppointment2 つの外部キーが含まれています。これらは、(テーブルの PK) および(UNIQUE インデックス)という名前のテーブル内の列を参照します。テーブルの定義は次のとおりです。StaffUsernameExternalIDUserUsernameUserExternalID

残念ながら、EDMX モデル デザイナーで [データベースからモデルを更新ExternalID] オプションを使用すると、列の外部キーが取得されません。このままです (緑で強調表示されているのは、正しくモデル化された関係に関連するプロパティです。黄色で強調表示されているのは、2 番目の関係に関連しているはずなのに無視されているプロパティです)。 テーブル間の関係が欠落している EDMX Designer を示すスクリーンショット

経験から、特にオブジェクトの変更を検出する場合、EDMX デザイナーが時々風変わりになる可能性があることを知っているので、通常のトリックをすべて試しました。Web.config接続文字列が正しいデータベースを指していることを確認しました。デザイナーでテーブルAppointmentとテーブルを完全に削除し、更新コマンドを再度実行しました。削除と更新の間にVisual Studioを保存して再起動することも試しました。User

データベースで関係が正しいことを確認するために、問題のある関係を正しく示す SSMS でデータベース ダイアグラムを作成しました。

SSMS データベース ダイアグラムのテーブル リレーションシップを示すスクリーンショット

また、新しいプロジェクトを作成し、同じ資格情報を持つ同じデータベースを指す新しいエンティティ データ モデルを追加しました。これは、問題が既存のモデルを更新しているがサイコロがないという事実に関連している場合に備えてです。新しいプロジェクトでも、関係は検出されません。

また、ナビゲーション プロパティを手動で作成しようとしましたが、このスクリーンショットからわかるように、選択する必要がある外部キーがドロップダウン リストで使用できません。

Visual Studio の [ナビゲーション プロパティの追加] ウィンドウのスクリーンショット

ExternalIDこの問題が、列がテーブルの主キーではないという事実に関係しているのUserか、それともそのNVARCHAR(10)データ型に関係しているのかはわかりません。正直なところ、わかりません。

この外部キーが検出されない理由について何か提案はありますか? どうすれば修正できますか?私のプロジェクトは .NET Framework 4.6 を対象としており、EF6 を使用しています。明らかに、私はデータベース ファーストを使用しています。

0 投票する
0 に答える
28 参照

visual-studio - ADO.NETエンティティモデルデザイナーを使用してedmxファイルを開かずに、「データベースからモデルを更新」とモデルブラウザーにアクセスする別の方法は?

edmx ファイルの読み込みに時間がかかっています。3.5分かかりました。それが一つの問題です。

ADO.NET Entity Model Designer を使用して edmx ファイルを開き、「データベースからモデルを更新」とモデル ブラウザを表示します。edmx を開かずにアクセスする方法はありますか? データベース図を見る必要はまったくありません。ただし、モデル ブラウザを表示して、削除するエンティティを選択する必要がある場合があります。