問題タブ [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.
asp.net-mvc - 最初に EF データベース - 既存のモデルに新しいモデルを追加する
だから私はデータベースを持っていて、そこからモデルを作成しました。すべてがうまく機能します。しかし今、データベースにさらにテーブルを追加し、それらからモデルを作成したいと考えています。
最初にEFデータベースでそれは可能ですか? 新しいモデルを追加するには、すべてのモデルを再作成する必要がありますか? もちろん、すべてのテーブルは同じデータベースからのものです。
Table1
例: 、Table2
、およびがあるとしましょうTable3
。DBContextGenerator
VS を使用して、.edmx
ファイルからモデルを生成しました。したがって、対応するデータベース テーブルにはModel1
、Model2
、およびがあり、 および を追加しModel3
たいと思います。Table4
Model4
すべてを再作成する必要がありますか、それとも何らかの方法で追加できますか?
vb.net - edmxを使用してカンマ区切りのアイテムをエンティティに変換する
列(コンマ区切りで保存)を変換して、edmxデザイナーに別のエンティティとして表示することはできますか?
テーブル構造
EDMXデザイナーの構造は
もしそうなら、誰かがEFデザイナーでそれを行う方法について私に指摘できますか?
注:テーブル構造を変更できず、最初にデータベースを使用しています
ありがとう
c# - ナビゲーションプロパティ名を意味のある名前に変更する方法
私はEntityFramework5でDatabaseFirstを使用しています。2つのテーブルがあります(大幅に簡略化されています)。
- 住所
- 街
- 町(など)
- お客様
- 名前
- 請求先住所
- DeliveryAddress
- AltDeliveryAddress
Visual Studioを使用してデータベースをEF(「データベースからモデルを更新」)にインポートすると、次のようなコードになります。
私が明らかに欲しいのはこのようなものです:
デザイナでモデルを編集し、ナビゲーションプロパティを変更して正しい名前を付けることができます。ただし、データベースに変更を加えるたびにモデルを再構築するため、これは実行可能なソリューションではありません。
私が試したオプションの1つは、次のような部分的なクラスを作成することです(既存のMyModel.Designer.csからコピーされたコードで、プロパティ名だけが変更されています)。
ただし、これを実行すると、次のエラーが発生します。
概念タイプ'MyModel.Customer'のメンバーの数が、オブジェクト側タイプ'MyNamespace.DataModel.Customer'のメンバーの数と一致しません。メンバーの数が同じであることを確認してください。
[NotMapped()]属性を使用してみましたが、違いはありません。[EdmRelationshipNavigationPropertyAttribute ...]属性を削除すると、Linqは次のエラーで文句を言います。
指定されたタイプメンバー'BillingAddress'は、LINQtoEntitiesではサポートされていません。初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされます。
Customersオブジェクトで意味のある名前を実現する他の方法はありますか?
これが私が最後に欲しいものです:
entity-framework - ASP.Net MVC4 アプリケーションで EF 4.x を使用して .edmx を生成した後の空の .Designer.cs ファイル
私は非常に単純な ASP.Net MVC4 アプリケーションをデータベース ファースト アプローチ (既存の DB を使用) で開始しました。.edmx
ADO.Net Entity Data Model テンプレートを使用して生成しました。プロセスはオプションのxxxxxxx.Designer.cs
下にファイルを作成しました。xxxxxxx.edmx
ただし、.cs ファイルは空で、次のメッセージが表示されます。
xxxxxxx.Designer.cs
メッセージに従って、ファイル内のコードを生成するプロパティを変更しました。
質問:
- これは正しいことですか?このファイルの目的は何ですか?
- 「コード生成項目の追加」を右クリックし、EF DBContext ジェネレーターを選択して、.edmx デザイナー ページから厳密に型指定された DBContext クラスを生成する必要もありますか?
データベース ファースト アプローチのプロセスとは具体的にどのようなものですか?
私は多くの投稿/ブログ/チュートリアルを見てきましたが、すべてが非常に混乱しているようで、ほとんどが CodeFirst アプローチです。
c# - Entity Framework は交差オブジェクトなしで多対多の関係を処理できますか?
データベースの最初のモデルを使用する: 従来のテーブルStudent
,Course
とStudentCourse
(後者には明らかに と への FK がある) があるStudent
としCourse
ます。
このモデルを EF にインポートすると、それぞれに対してオブジェクトが生成されます。Student
およびCourse
クラスにはそれぞれ のコレクションがあり、StudentCourses
そこから別のリレーションシップをジャンプしてCourse
またはStudent
にそれぞれ到達する必要があります。
基礎となる交差テーブルが非表示になるようにコードを生成したいと考えています。つまりStudent
、 のコレクションがありCourses
、Course
のコレクションがありStudents
ます。これが他のORMソフトウェア(具体的にはTopLink )で行われているのを見てきました。それはEFで行うことができますか?
entity-framework - Entity Framework Database First - 複合外部キー
いくつかの複合外部キーを含むデータベースがあります。たとえば、外部キーの生成スクリプトは次のとおりです。
Entity Framework 5 Database-First を使用して、このデータベースからモデルを生成しようとしています。ただし、複合外部キーの関連付けは、すべてのテーブルおよびその他の単純な外部キーで生成されているわけではありません。
どうすればよいですか:
- edmx の背後にある xml にこれらの複合外部キーを手動で作成します (面倒)
- エンティティフレームワークにこれらの外部キーを適切に生成させて、マッピングを取得できるようにします
ありがとう!
asp.net-mvc-3 - 常に変化するデータベースと MVC 3 アプリケーションの接続
ASP.NET MVC 3 の学習を始めたばかりで、アプリケーションのデータベースに接続する最良の方法を決定するのに非常に苦労しています。私のアプリケーションデータベースは定期的に強化されるため、新しいテーブル、列を追加/削除でき、一部の列のデータ型も変更される可能性があります。したがって、このシナリオでは、コードが管理しやすくなり、これらの変更がコードに影響を与えないように、どのアプローチが最適でしょうか (例: EF でテーブルを削除して再選択すると、新しいクラスが生成され、関連するコードが生成されます)クラスが影響を受けます)?Code First、Database First、Entity Framework、Enterprise Library Data Access Block、SQL 接続呼び出しストアド プロシージャなどのアプローチがあることを読みました。しかし、このシナリオでどちらが最適かはわかりません。また、データベースに接続するための ASP.NET MVC 3 の本当のフレーバーが欠けている可能性があります。
編集1
なぜ閉会を命じられたのかはわかりませんが、それでもこのフォーラム以外に選択肢はありません。私の質問Code First vs Data Firstの部分的な内容を述べている同様の質問を見つけました。その答えは、データベースの最初のアプローチに関して私の頭の中で混乱を引き起こしました。
asp.net-mvc-4 - MVC4EF5データベース最初に部分クラスでデフォルト値を設定
私はMVCを初めて使用し、部分クラスのデフォルト値を設定する方法を理解しようとしています。私は今2日間検索していますが、何も動作しません。これが想定される解決策ですが、私にはうまくいきません。[DefaultValue(10)]データ注釈も試しました。
これは、edmxファイルから作成された自動生成された部分クラスです。
これが、アノテーションを追加するために作成した部分クラスです。
次に、コントローラーで、クラスの新しいインスタンスをインスタンス化して初期化しますが、設定した値が設定されません。
sql - LINQ との多対多の関係に参加する
私たちが行っている EF の移行のために、いくつかの古い SQL ストアド プロシージャを LINQ に変換する任務を負っていますが、少し困惑しています。これが既存のアプリケーションからの移行であることを考えると、edmx は最初にデータベースを生成しました。したがって、複製しようとしている SQL ステートメントがあります。
特に、私が問題を抱えている部分は、 と の間の多対多の関係を表す関係テーブルであるJOINDeliverySubscription_Method_Rel
です。DeliverySubscription
DeliveryMethod
これは次のように表示されます。
[DeliverySubscription] * ---- * [Delivery Method]
edmx のデータベース ダイアグラムで。DeliverySubscription_Method_Rel
エンティティは作成されません。SQL ステートメントでわかるように、JOIN は直接リレーションシップ テーブルにありますが、これを LINQ で複製する方法がわかりません。助けてください!
更新:ウェブを見回すと、次のようなことを提案する同様の例が見つかりました:
...しかし、これまでのところ、アプリケーションで他にも変更することがたくさんあるため、これをテストするためにビルドすることはできません。そのため、これを実行して、これが正しいかどうかを確認したかっただけです。
c# - ポリモーフィックアソシエーションのモデリングデータベースファーストとコードファースト
1つのテーブルに、他の複数のテーブルの子になることができるレコードが含まれているデータベースがあります。所有者のIDとテーブル名で構成される「ソフト」外部キーがあります。この(アンチ)パターンは、「多形関連」として知られています。これまでで最高のデータベース設計ではないことは承知しており、近いうちに変更する予定ですが、近い将来には変更しません。簡単な例を示しましょう。
、、およびの両方Event
にコメントのレコードがあります。ご覧のとおり、FKの厳しい制約はありません。Person
Product
Entity Frameworkでは、サブレーザーなどでこのモデルをサポートし、コレクションなどを作成することComment
ができますEventComment
。Event
EventComments
サブクラスと関連付けは、データベースから基本モデルを生成した後に手動で追加されます。OwnerCode
このTPHモデルの識別子です。、、、およびは完全に異なるエンティティであることEvent
に注意してください。それらに共通の基本クラスを設定することは意味がありません。Person
Product
これはデータベースファーストです。私たちの実際のモデルはこのように機能しますが、問題ありません。
わかった。次に、コードファーストに移行します。そこで、データベースをコードファーストモデル(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では概念モデルの一部です。
では、どうすればこのモデルをコードファーストで作成できますか?重要なのは、ストレージモデルではなく、概念モデルで関連付けをマップするようにコードファーストで指示する方法だと思います。