問題タブ [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 に答える
826 参照

c# - Entity Framework の同じテーブルにナビゲーション プロパティを構成するにはどうすればよいですか?

流暢な構成を使用して Entity Framework を構成し、属性でこれを行うのと同じように動作させるにはどうすればよいですか。

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

c# - 1 対 1 の識別関係のための Entity Framework Code First Fluent API 構成

私は次のクラス構造を持っています:

ここに画像の説明を入力

カードテーブルに識別関係を入れるようにFluent APIを設定する方法は?

つまり

  • カード テーブル PK: Id、CustomerId
  • カード テーブル FK: CustomerId

Customer.Card プロパティに新しいカードを割り当てるときに、以前のカードを削除したいと思います。

したがって、クラスを次のように定義しました。

DbContext は次のようになります。

テストは次のとおりです。

まったく機能しません。私はこれを2回目の保存で持っていますが、ここで識別関係を指定する方法がわかりません:

未処理の例外: System.Data.Entity.Infrastructure.DbUpdateException: リレーションシップの外部キー プロパティを公開しないエンティティの保存中にエラーまたは発生しました。単一のエンティティを例外のソースとして識別できないため、EntityEntries プロパティは null を返します。保存中の例外イオンの処理は、エンティティ タイプで外部キー プロパティを公開することで簡単に行うことができます。詳細については、InnerException を参照してください。---> System.Data.Entity.Core.U pdateException: 「Customer_Card」AssociationSet からの関係が「削除済み」状態です。多重度の制約がある場合、対応する「Customer_Card _Target」も「削除済み」状態でなければなりません。

更新1 対多の関係で機能させるのは簡単です。以下に完全な例を示します。

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

c# - EF Fluent API を使用してエンティティの関係をマップする場合、関連する両方のエンティティをマップする必要がありますか?

このチュートリアルの指示に従って、EF Fluent API で Code First を使用してエンティティの関係を作成し、モデルで 1:n および m:n の関係を作成しています。

私が疑問に思っていて、検索で応答が見つからなかったのは、その両端で関係を定義する必要があるかどうかです。

つまり、ユーザーと組織というエンティティがある場合、以下で説明するように、これら 2 つのエンティティに関連する 2 つの関係があります。

  • ユーザーは複数の組織を持つことができますが、組織は 1 人のユーザーが所有する必要があります。
  • ユーザーは多くの組織に存在する場合がありますが、組織には多くのユーザーが存在する場合があります。

これを念頭に置いて、Fluent API を使用して次のようにリレーションシップを定義しました。

しかし、これらの定義で十分でしょうか? それとも、エンティティの反対側でも関係を定義する必要がありますか? つまり、次のコードを追加する必要がありますか?

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

c# - エンティティが別のエンティティに対して複数の 0..1:n 関係を持っている場合、Fluent API を使用してそれらを定義する方法は?

私は Azure Mobile Service に取り組んでおり、私のモデルにはエンティティMessageがあります。これは、次のステートメントに従ってそれ自体に関連しています。

  • Messageは親Messageを持つ場合があり、Messageは多くのMessageの親になる場合があります。

私のクラスは次のように定義されました:

そして私のDTOはこれです:

この 2 つのクラスを AutoMapper を使用して次のようにマッピングしました。

そして、これに対する私のFluent API構成は次のとおりです。

しかし、新しいメッセージを挿入しようとすると、次のエラーが発生します。

操作は次のエラーで失敗しました: 'MobileServiceContext.Messages' のエンティティは 'Message_CreatedBy' 関係に参加しています。0 件の関連する 'Message_CreatedBy_Target' が見つかりました。1 'Message_CreatedBy_Target' が予期されます。

このエラーから、私のMessageにはParentがあることが期待されていることを理解していますが、これは最初のMessageであるため、Parentがなく、すべてのMessageに親があるわけでもありません。Fluent API構成で、Parent プロパティを必須として定義しました。オプションに設定すると、メッセージを挿入しようとしたときに次のエラーが発生したためです。

モデルの生成中に 1 つ以上の検証エラーが検出されました:FollowAppApi.Models.Message_Parent: : 多重度は、関係 'Message_Parent' のロール 'Message_Parent_Target' の参照制約と競合します。従属ロールのすべてのプロパティは null 非許容であるため、プリンシパル ロールの多重度は '1' でなければなりません。

エンドポイントに送信する JSON は次のとおりです。

このシナリオまたはオプション プロパティが存在する必要があるその他のシナリオで、オプション プロパティを定義するように構成を設定するにはどうすればよいですか?

編集1

そのため、エンティティが他のエンティティと 2 つの関係を持つ状況に対処するときにこれを確認して読み、InverseProperty 注釈を追加して、次のエラーが発生しました。

操作は次のエラーで失敗しました: '依存する操作の有効な順序を特定できません。外部キーの制約、モデルの要件、またはストアで生成された値が原因で、依存関係が存在する場合があります。

私が覚えていることから、このエラーは循環参照が存在することを示しています。これは、Parent プロパティまたは Message との User 関係のいずれかによるものだと思いますが、よくわかりません。

このエラーの原因は何ですか?

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

c# - C# - EF 6 複数のテーブルを 1 つの FK に

Code First/Fluent API を使用してデータベースを設計していて、次の質問に直面しました。

異なるテーブルを参照できる FK をマップする方法は?

これはシナリオです:

5 レベルの階層を持つ勘定科目チャートがあります。

上から下へ (1 対多: Acc1 は多くの Acc2 を持つことができ、Acc2 は Acc1 を持つ必要があります):

アカウント 1 -> アカウント 2 -> アカウント 3 -> アカウント 4 -> アカウント 5

例: サプライヤーは、1 または 2 または 3 または 4 または 5 のいずれかのアカウント チャートに含まれる可能性があります (これは、コマーシャル オートメーションのルールです)。

流暢な API を使用してそれを進めるには?

DB モデル

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

c# - エンティティ フレームワークの複合主キーのうちの 1 つが ID の場合

次のように、クラスにマップされた複合キーがあります。

しかし、ここで A は単位元であるはずです。

ただし、A (ID であるため null) と B の値を持つオブジェクトを追加しようとすると、主キー違反が発生します。

これを回避する方法はありますか?

種類は次のとおりです。

そしてDBの世界から:

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

entity-framework - データベースの更新時にアプリケーション ユーザー ID への外部キーがキー エラーをスローする

最初にコードを使用して、 ID をクラスにYogaSpaceリンクする外部キーを作成しています。そのため、新しいものを作成して挿入するたびに、ID にログインしている人の ID が入力されます。そして、1 つのIDに対してオブジェクトが複数になる可能性がある 1 対多にしたいと考えています。しかし、重要なエラーが発生しています。ApplicationUsersApplicationUserRefIdYogaSpaceYogaSpaceApplicationUserYogaSpaceApplicationUser

ここに私のApplicationUserクラスがあります

ここにすべてのエラーがあります。データベースを更新すると、キーに関連するスローが発生します。

モデルの生成中に 1 つ以上の検証エラーが検出されました:

GiftExchange.DataLayer.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' > キーが定義されていません。この EntityType のキーを定義します。GiftExchange.DataLayer.Models.IdentityUserRole: : EntityType 'IdentityUserRole' > キーが定義されていません。この EntityType のキーを定義します。

アップデート!キーの作成を要求するクラスをオーバーライドしようとしましたが、それでも機能しません

このリンクにある流暢なAPIを使用してキーを追加しようとしました[エンティティタイプMVC5 EF6のユーザー

YogaSpaceContextが含めた

データベースを更新するためのパッケージマネージャーからキーが定義されていないエラーを削除したようです。しかし、最初にコードにどのように実装しますか?

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

c# - 1 つまたは 0 から 1 の Entity Framework Code First FluentApi

  1. fluentapi の 1 つまたは 0 対 1 の参照を作成し、両方のエンティティにナビゲーション プロパティを設定する必要があります。
  2. EntityTwo には、外部キー (EntityOneId) を格納する単純なプロパティが含まれている必要があります。

    /li>

より複雑なシナリオ:

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

c# - 最小 int 値の制約を設定する

リポジトリ パターンを使用しています。Product というエンティティがあり、ゼロ価格を回避するために価格の最小値を設定したいと考えています。EntitytypeConfiguration クラスで作成することは可能ですか?

私の製品構成クラス

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

c# - 1 対 0 または 1 の関係エンティティ フレームワーク

コードファースト/流暢なAPIを使用して1対(0または1)のテーブル関係を強制しようとしていますが、意図したテーブルは以下のとおりです。

学生は連絡先 (StudentContact) のみを持っている場合と持っていない場合がありますが、すべての連絡先 (StudentContact) には学生が必要です。

使ってみた

残念ながら、StudentID 列に 1 つの関係が適用されないため、StudentID 列に重複する値が含まれる可能性があります。

参照:エンティティ フレームワーク コードの最初の 1 対 0/1 の関係