問題タブ [ef-fluent-api]

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 に答える
801 参照

c# - Entity Framework 6 - 1 対オプションの関係

私はEFにかなり慣れておらず、バージョン6を使用しており、1対1の関係に固執しています。私の全体的な構造は、内部に GalleryMediaItem エンティティの ICollection を持つ Gallery オブジェクトがあり、各 GalleryMediaItem にはそれに関連付けられた MediaItem エンティティがあります。GalleryMediaItem エンティティには、基礎となる MediaItem に値があるという要件があることに注意してください。ただし、MediaItem エンティティ自体は GalleryMediaItem を認識していません。これは、MediaItem エンティティが GalleryMediaItem 以外のものに関連付けられる可能性があるため、意図的なものです。次に例を示します。

私がやろうとしているのは、インスタンスMediaItemからプロパティにアクセスするときに、MediaItem エンティティに対して遅延読み込みを機能させることです。GalleryMediaItem私のデータベース構造は上記のコード構造と一致し (GalleryMediaItem には GalleryId と MediaItemId がありますが、MediaItem には GalleryMediaItemId はありませんし、そうすべきでもありません)、返されるオブジェクトは一貫して null です。ここでの奇妙な点はMediaItemId、インスタンスのプロパティGalleryMediaItemが正しく設定されているのに、ナビゲーション プロパティ自体が機能しないことです。次のすべてのバリアントを試してみましたが、うまくいきませんでした。

等々。試したすべてのバリアントでエラーが発生することはありません。ナビゲーション プロパティにアクセスできないだけです。

GalleryMediaItemMediaItemエンティティを入力できるがMediaItem、それ自体では (POCO 経由とデータベースの両方で) 親所有者の知識がない場合に、これを構成する適切な方法は何ですか?

編集

コメントの 1 つで、個々のアイテムを取得するために使用されているコードを表示するよう求められました。DbContext インスタンスの上に汎用フレームワークがありますが、その下には単一のGalleryエンティティを取得するためのメソッドがあります。

上記のBaseEntityジェネリックは、Id、CreateDate、MaintDate などを含む超基本的な POCO です。私の POCO クラスはいずれも、対応する DB 値の属性を使用せず、すべてが流動的な EF API を介して行われます。Gallery直接継承するBaseEntityため、この汎用関数は期待どおりに機能します。

関数は次のDataUtilities.BuildOrExpressionTreeようになります。

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

c# - DayOfWeek列を含む流暢なAPIで複合主キーを作成する方法は?

私のモデルには、曜日ごとのデータを含む詳細テーブルがあるため、次の定義があります。

EF Fluent API マッピング クラスでは、複合キーを次のように定義します。

しかし、Entity Framework によって生成されたテーブル構造には、主キーの最初の列しかありません。

この問題は、2 番目の列が DayOfWeek 列挙型であることが原因ですか?? 以前に複合キーで列挙型を使用したことがありますが、この問題は発生しませんでした

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

c# - EF Fluent API の 1 対多の関係。どのような目的で定義する必要がありますか?

Entity Framework Fluent API を使用すると、参加する両方のクラスで定義できる関係があります。どちらのソリューションにも長所または短所があるかどうか疑問に思っていました。

実演させてください。私はこれらのクラスを持っています:

そして構成:

ご覧のとおり、両方の構成に同じ 1 対多の関係が含まれています。これは明らかに冗長です。

対照的に、属性を使用すると、次のような状況で何がどこに行くのかが明確になります。

私の質問は:

関係をどこで定義する必要がありますか? グループで?動物に?違いはありますか?ここで従うべき明確な規則はありますか?

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

c# - ASP ボイラープレート (EF) - Fluent Api - 主キーを使用しない自己参照テーブル

そのため、別のデータベースからテーブルをインポートする必要があります。テーブルは独自のキーを使用して自己参照していますが、特にインポート先のテーブルが複数のデータセット用であるため、キーを信頼できません。

私はエンティティ フレームワークとコード ファーストの流暢な API を使用していますが、この問題の回避策を見つけるのに苦労しています。

これが私のPOCOクラスです(必要なデータポイントのみに簡略化されています):

Id を使用できれば、これは単純な自己参照テーブルになりますが、personid を使用する必要があります。ここで必要な流れるような API のアイデアをセットアップしましたが、EF は Id を見続けます。

personid を Unique Constraint (EF6.1.2 ではまだ実装されていません) として使用してコレクションを埋める回避策はありますか?

Asp.NetBoilerplate も使用しているため、エンティティ、リポジトリなどをある程度制御できますが、お勧めしません。つまり、「Id」はすべてのテーブルの主キーであると見なされます。

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

c# - 既存の多対多の関係に列を追加する - EF Code First

Entity Framework 6.1.1 を使用しています。Fluent API で正しく作成したジャンクション テーブルに追加のフィールドを追加する必要があります。これは Fluent API では不可能であり、モデル クラスを作成する必要があることはわかっていますが、問題は、ジャンクション テーブルを削除して再作成することなく、流暢な API 構成をエンティティ モデル クラスにマップすることができないことです。それを作成します。

Docente と Lezione の 2 つのモデル クラスがあります。

そして、テーブル「LezioneDocente」を正しく設定する構成クラス:

ここで、このテーブル (RuoloId) に追加の列を追加する必要があるため、流暢な API 構成をモデル クラスにマップする必要があります。新しいモデル クラスを追加し、Docente クラスと Lezione クラスを変更して新しいモデル "LezioniDocente" を参照することで、次のようにします。

変更を反映するために新しい移行を追加すると、必然的に LezioneDocente テーブルで DropTable が呼び出されます。

何か不足していますか?既存のテーブルを削除せずに流暢な API 関係をモデル クラスにマップするにはどうすればよいですか? また、新しい列を指定せずに LezioneDocente クラスを記述しようとしましたが、とにかくテーブルを削除してしまいます。

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

entity-framework - Azure Mobile Services で多対多の関係エンティティに POST/PATCH する方法は?

私は、Windows Development Centerのフィールド エンジニアのサンプル プロジェクトに従って、モデルに多対多の関係をマッピングする方法を説明しています。私を悩ませているのは、エントリを多対多の関係に挿入する方法です。

私のモデルを例にとります:

組織は多くのユーザーを持つことができます

ユーザーは多くの組織に所属できます。

Userのモデル クラスは次のようになります。

私のUserDTOクラスは次のとおりです。

私の組織クラス:

私のOrganizationDTOクラス:

これらのクラスを念頭に置いてコントローラー クラスを作成し、次のようにAutoMapperを使用して DTO とモデル クラスをマッピングしました。

Fluent APIを使用して、次のようなEntityTypeConfigurationクラスを使用して、これら 2 つのエンティティ間の関係を定義しました。

UserDTOOrganizationDTOを処理するTableControllerクラスを作成しました。新しいUsersまたは新しいOrganizationsを挿入するのに問題はありませんが、各TableControllerクラスのエンドポイントでは、理解できる限り、ユーザーまたは組織を個別に追加することしかできません。

OrganizationsUserテーブルにエントリを作成するには、どうすればこれを達成できますか?

PATCHリクエストがこれを行う方法であるべきだと考えていましたが、それは正しい方法ですか? これには TableController を定義する必要がありますか? この関係で要素の挿入、更新、選択、および削除を公開するにはどうすればよいですか? エンドポイントに送信される JSON は何でしょうか?

編集1

次のような組織のユーザー プロパティにパッチを適用しようとしました。

URL: serviceUrl/tables/Organization/1

JSON 本文:

しかし、それは私にエラーを与えました:

主キー値の 1 つの型が、エンティティで定義されている型と一致しませんでした。詳細については、内部例外を参照してください。パラメータ名: keyValues

内部例外:

引数の型 'Edm.Int32' と 'Edm.String' は、この操作と互換性がありません。WHERE 述語の近く、1 行目、78 列目。

間違っていなければFluent APIで作成した結合テーブルに送信している文字列をマッピングする必要があるようですが、Fluent APIで定義した結合テーブルをマッピングするにはどうすればよいですか? PATCH はこれを行う方法ですか? それとも他の方法がありますか?