問題タブ [ef-database-first]

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 投票する
2 に答える
1929 参照

asp.net-mvc - 最初に EF データベース - 既存のモデルに新しいモデルを追加する

だから私はデータベースを持っていて、そこからモデルを作成しました。すべてがうまく機能します。しかし今、データベースにさらにテーブルを追加し、それらからモデルを作成したいと考えています。

最初にEFデータベースでそれは可能ですか? 新しいモデルを追加するには、すべてのモデルを再作成する必要がありますか? もちろん、すべてのテーブルは同じデータベースからのものです。

Table1例: 、Table2、およびがあるとしましょうTable3DBContextGeneratorVS を使用して、.edmxファイルからモデルを生成しました。したがって、対応するデータベース テーブルにはModel1Model2、およびがあり、 および を追加しModel3たいと思います。Table4Model4

すべてを再作成する必要がありますか、それとも何らかの方法で追加できますか?

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

vb.net - edmxを使用してカンマ区切りのアイテムをエンティティに変換する

列(コンマ区切りで保存)を変換して、edmxデザイナーに別のエンティティとして表示することはできますか?

テーブル構造

EDMXデザイナーの構造は

もしそうなら、誰かがEFデザイナーでそれを行う方法について私に指摘できますか?

注:テーブル構造を変更できず、最初にデータベースを使用しています

ありがとう

0 投票する
4 に答える
7706 参照

c# - ナビゲーションプロパティ名を意味のある名前に変更する方法

私はEntityFramework5でDatabaseFirstを使用しています。2つのテーブルがあります(大幅に簡略化されています)。

  • 住所
    • 町(など)
  • お客様
    • 名前
    • 請求先住所
    • DeliveryAddress
    • AltDeliveryAddress

Visual Studioを使用してデータベースをEF(「データベースからモデルを更新」)にインポートすると、次のようなコードになります。

私が明らかに欲しいのはこのようなものです:

デザイナでモデルを編集し、ナビゲーションプロパティを変更して正しい名前を付けることができます。ただし、データベースに変更を加えるたびにモデルを再構築するため、これは実行可能なソリューションではありません。

私が試したオプションの1つは、次のような部分的なクラスを作成することです(既存のMyModel.Designer.csからコピーされたコードで、プロパティ名だけが変更されています)。

ただし、これを実行すると、次のエラーが発生します。

概念タイプ'MyModel.Customer'のメンバーの数が、オブジェクト側タイプ'MyNamespace.DataModel.Customer'のメンバーの数と一致しません。メンバーの数が同じであることを確認してください。

[NotMapped()]属性を使用してみましたが、違いはありません。[EdmRelationshipNavigationPropertyAttribute ...]属性を削除すると、Linqは次のエラーで文句を言います。

指定されたタイプメンバー'BillingAddress'は、LINQtoEntitiesではサポートされていません。初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされます。

Customersオブジェクトで意味のある名前を実現する他の方法はありますか?

これが私が最後に欲しいものです:

0 投票する
2 に答える
10283 参照

entity-framework - ASP.Net MVC4 アプリケーションで EF 4.x を使用して .edmx を生成した後の空の .Designer.cs ファイル

私は非常に単純な ASP.Net MVC4 アプリケーションをデータベース ファースト アプローチ (既存の DB を使用) で開始しました。.edmxADO.Net Entity Data Model テンプレートを使用して生成しました。プロセスはオプションのxxxxxxx.Designer.cs下にファイルを作成しました。xxxxxxx.edmxただし、.cs ファイルは空で、次のメッセージが表示されます。

xxxxxxx.Designer.csメッセージに従って、ファイル内のコードを生成するプロパティを変更しました。

質問:

  1. これは正しいことですか?このファイルの目的は何ですか?
  2. 「コード生成項目の追加」を右クリックし、EF DBContext ジェネレーターを選択して、.edmx デザイナー ページから厳密に型指定された DBContext クラスを生成する必要もありますか?

データベース ファースト アプローチのプロセスとは具体的にどのようなものですか?

私は多くの投稿/ブログ/チュートリアルを見てきましたが、すべてが非常に混乱しているようで、ほとんどが CodeFirst アプローチです。

0 投票する
2 に答える
5847 参照

c# - Entity Framework は交差オブジェクトなしで多対多の関係を処理できますか?

データベースの最初のモデルを使用する: 従来のテーブルStudent,CourseStudentCourse(後者には明らかに と への FK がある) があるStudentとしCourseます。

このモデルを EF にインポートすると、それぞれに対してオブジェクトが生成されます。StudentおよびCourseクラスにはそれぞれ のコレクションがあり、StudentCoursesそこから別のリレーションシップをジャンプしてCourseまたはStudentにそれぞれ到達する必要があります。

基礎となる交差テーブルが非表示になるようにコードを生成したいと考えています。つまりStudent、 のコレクションがありCoursesCourseのコレクションがありStudentsます。これが他のORMソフトウェア(具体的にはTopLink )で行われているのを見てきました。それはEFで行うことができますか?

0 投票する
2 に答える
3946 参照

entity-framework - Entity Framework Database First - 複合外部キー

いくつかの複合外部キーを含むデータベースがあります。たとえば、外部キーの生成スクリプトは次のとおりです。

Entity Framework 5 Database-First を使用して、このデータベースからモデルを生成しようとしています。ただし、複合外部キーの関連付けは、すべてのテーブルおよびその他の単純な外部キーで生成されているわけではありません。

どうすればよいですか:

  1. edmx の背後にある xml にこれらの複合外部キーを手動で作成します (面倒)
  2. エンティティフレームワークにこれらの外部キーを適切に生成させて、マッピングを取得できるようにします

ありがとう!

0 投票する
3 に答える
529 参照

asp.net-mvc-3 - 常に変化するデータベースと MVC 3 アプリケーションの接続

ASP.NET MVC 3 の学習を始めたばかりで、アプリケーションのデータベースに接続する最良の方法を決定するのに非常に苦労しています。私のアプリケーションデータベースは定期的に強化されるため、新しいテーブル、列を追加/削除でき、一部の列のデータ型も変更される可能性があります。したがって、このシナリオでは、コードが管理しやすくなり、これらの変更がコードに影響を与えないように、どのアプローチが最適でしょうか (例: EF でテーブルを削除して再選択すると、新しいクラスが生成され、関連するコードが生成されます)クラスが影響を受けます)?Code FirstDatabase FirstEntity FrameworkEnterprise Library Data Access BlockSQL 接続呼び出しストアド プロシージャなどのアプローチがあることを読みました。しかし、このシナリオでどちらが最適かはわかりません。また、データベースに接続するための ASP.NET MVC 3 の本当のフレーバーが欠けている可能性があります。

編集1

なぜ閉会を命じられたのかはわかりませんが、それでもこのフォーラム以外に選択肢はありません。私の質問Code First vs Data Firstの部分的な内容を述べている同様の質問を見つけました。その答えは、データベースの最初のアプローチに関して私の頭の中で混乱を引き起こしました。

0 投票する
2 に答える
6383 参照

asp.net-mvc-4 - MVC4EF5データベース最初に部分クラスでデフォルト値を設定

私はMVCを初めて使用し、部分クラスのデフォルト値を設定する方法を理解しようとしています。私は今2日間検索していますが、何も動作しません。これが想定される解決策ですが、私にはうまくいきません。[DefaultValue(10)]データ注釈も試しました。

これは、edmxファイルから作成された自動生成された部分クラスです。

これが、アノテーションを追加するために作成した部分クラスです。

次に、コントローラーで、クラスの新しいインスタンスをインスタンス化して初期化しますが、設定した値が設定されません。

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

sql - LINQ との多対多の関係に参加する

私たちが行っている EF の移行のために、いくつかの古い SQL ストアド プロシージャを LINQ に変換する任務を負っていますが、少し困惑しています。これが既存のアプリケーションからの移行であることを考えると、edmx は最初にデータベースを生成しました。したがって、複製しようとしている SQL ステートメントがあります。

特に、私が問題を抱えている部分は、 と の間の多対多の関係を表す関係テーブルであるJOINDeliverySubscription_Method_Relです。DeliverySubscriptionDeliveryMethod

これは次のように表示されます。

[DeliverySubscription] * ---- * [Delivery Method]

edmx のデータベース ダイアグラムで。DeliverySubscription_Method_Relエンティティは作成されません。SQL ステートメントでわかるように、JOIN は直接リレーションシップ テーブルにありますが、これを LINQ で複製する方法がわかりません。助けてください!

更新:ウェブを見回すと、次のようなことを提案する同様の例が見つかりました:

...しかし、これまでのところ、アプリケーションで他にも変更することがたくさんあるため、これをテストするためにビルドすることはできません。そのため、これを実行して、これが正しいかどうかを確認したかっただけです。

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

c# - ポリモーフィックアソシエーションのモデリングデータベースファーストとコードファースト

1つのテーブルに、他の複数のテーブルの子になることができるレコードが含まれているデータベースがあります。所有者のIDとテーブル名で構成される「ソフト」外部キーがあります。この(アンチ)パターンは、「多形関連」として知られています。これまでで最高のデータベース設計ではないことは承知しており、近いうちに変更する予定ですが、近い将来には変更しません。簡単な例を示しましょう。

ここに画像の説明を入力してください

、、およびの両方Eventにコメントのレコードがあります。ご覧のとおり、FKの厳しい制約はありません。PersonProduct

Entity Frameworkでは、サブレーザーなどでこのモデルをサポートし、コレクションなどを作成することCommentができますEventCommentEventEventComments

ここに画像の説明を入力してください

サブクラスと関連付けは、データベースから基本モデルを生成した後に手動で追加されます。OwnerCodeこのTPHモデルの識別子です。、、、およびは完全に異なるエンティティであることEventに注意してください。それらに共通の基本クラスを設定することは意味がありません。PersonProduct

これはデータベースファーストです。私たちの実際のモデルはこのように機能しますが、問題ありません。

わかった。次に、コードファーストに移行します。そこで、データベースをコードファーストモデル(EF Power Tools)にリバースエンジニアリングし、サブクラスを作成し、関連付けと継承をマッピングしました。Linqpadでモデルに接続しようとしました。トラブルが始まったのはその時です。

このモデルでクエリを実行しようとすると、InvalidOperationExeception

外部キーコンポーネント'OwnerId'は、タイプ'EventComment'で宣言されたプロパティではありません。モデルから明示的に除外されていないこと、および有効なプリミティブプロパティであることを確認してください。

これは、双方向の関連付けがありOwnerId、のプロパティとしてマップされている場合に発生しCommentます。EventMap私のクラス( )のマッピングはEntityTypeConfiguration<Event>次のようになります。

OwnerIdそこで、モデルを使用せずに関連付けをマッピングしようとしました。

これはMetaDataException

指定されたスキーマが無効です。エラー:(10,6):エラー0019:タイプの各プロパティ名は一意である必要があります。プロパティ名'OwnerId'はすでに定義されています。(11,6):エラー0019:タイプの各プロパティ名は一意である必要があります。プロパティ名'OwnerId'はすでに定義されています。

3つのエンティティコメントの関連付けのうち2つを削除しても問題ありませんが、もちろんそれは解決策ではありません。

いくつかの詳細:

  • DbContextジェネレーター項目を追加することにより、edmxから動作するDbContextモデル(「コードセカンド」)を作成することができます。(これは当面の回避策になります)。
  • 動作中のコードファーストモデル(1つの関連付け)をedmx(EdmxWriter)にエクスポートすると、関連付けはストレージモデルにあるように見えますが、元のedmxでは概念モデルの一部です。

では、どうすればこのモデルをコードファーストで作成できますか?重要なのは、ストレージモデルではなく、概念モデルで関連付けをマップするようにコードファーストで指示する方法だと思います。