問題タブ [fluent-entity-framework]
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.
entity-framework - Fluent EFで一方向の1対1をモデル化する方法は?
次のエンティティがあるとします。
BoxMap を定義する適切な方法は何ですか? これで十分ですか?または、必要ですかWithRequiredPrincipal
(それが何をするのかわかりません):
注: 流暢な API を学習するための優れたリソースは大歓迎です。ありがとう。
c# - EF HasOptional WithMany
Googleまたはstackoverflowで検索しても解決できない問題があります。
JournalLines と Accounts の 2 つのテーブルがあり、JournalLine でアカウントを参照したい (私は経済学が嫌いです) が、参照はオプションである必要があり、アカウントは JournalLine へのナビゲーション プロパティを持つべきではありません (理想的には)。
仕訳行:
_アカウント:
そしてそれぞれのマッピング:
私が得ているエラーは次のようなものです:
モデルの生成中に 1 つ以上の検証エラーが検出されました:
tSystem.Data.Entity.Edm.EdmAssociationType: : 多重度は、関係 'JournalLine_Account' のロール 'JournalLine_Account_Target' の参照 > 制約と競合します。>従属ロールのプロパティはすべて null 非許容であるため、プリンシパル ロールの多重度は '1' でなければなりません。
これは私を混乱させます。誰かが問題に光を当ててくれることを願っています。
アップデート
途中で助けてくれた答えに感謝し、キーを削除することで仕事との関係を築きました。次に、重複Account
したアカウントに割り当てると、奇妙な動作が作成されました。JournalLine
結局のところ、依存性注入でリポジトリパターンを使用しているため、これはそれほど奇妙な動作ではありません。私が考えていなかったのは、コンテキストが両方のリポジトリで同じではなかったため、JournalLinesRepository は独自のリポジトリからフェッチしたアカウントを追跡していなかったため、それを新しいエンティティとして挿入するのが賢明だと考えたことです。これは、アイテムの追跡が期待どおりに機能するように、リポジトリに同じコンテキストを挿入することで解決されました。再びあなたの助けに感謝します。
c# - HasForeignKey による 1 対 0 または 1
私は2つのモデルを持っています:
流暢なマッピングを使用してそれらをマッピングしたい。従業員テーブルには、null 非許容の列「person_id」があります。私は次のことを試しました:
しかし、それは失敗します:
System.Data.Entity.ModelConfiguration.ModelValidationException : モデルの生成中に 1 つ以上の検証エラーが検出されました:
person_id: 名前: タイプ内の各プロパティ名は一意である必要があります。プロパティ名 'person_id' は既に定義されています。
PersonId プロパティが必要なので、基本的には次のとおりです。
しかし、ここには HasForeignKeyのようなメソッドはありません
entity-framework - Entity Framework 5 ネストされた「多対多」から「多対多」カスケードへの流暢なマッピング
次のケースがあります。
RoleUser が削除されると、すべての UserRoleCollection がカスケードで削除されるように、EF に流暢にマップしようとしています。クラス RoleUser は、ユーザーとロールの間で多対多であるため、EF モデルには存在しません。
オブジェクト モデルは次のように定義されます。
User - RoleList
User - UserRoleConnectionList
Role - UserList
Role - UserRoleConnectionList
UserRoleConnection - UserList
UserRoleConnection - RoleList
UserRoleConnection - ConnectionList
Connection - UserRoleConnectionList
ユーザーからロールを削除する場合、RoleUser と UserRoleConnections も削除する必要があります。現在、データベースに ON CASCADE DELETE があるため機能しますが、EF はデータコンテキストから UserRoleConnection を削除せず、消去されたエンティティを残します。
c# - カスタム列名を使用して流暢なAPIを使用して、別のテーブルへのオプションの外部キーを作成する方法は?
私は Entity Framework 5 を使用しており、既存のデータベース スキーマの上で使用したいコード ファースト モデルを作成しています。したがって、スキーマの設計を制御することはできません。
私は2つのテーブルを持っていmatters
ますusers
. テーブルには、システムのusers
実際のユーザーであるユーザー アカウントが含まれています。matters
テーブルには、スケジュールされた予定などに似たデータが含まれています。
テーブルには、という名前の列にmatters
への外部キーがあります。この列には、「ねえ、この行はこのの を指定しています」とだけ書かれています。これはオプションのキーです。案件にマネージャーがいる必要はありません。users
manager
users
manager
matter
のレコードのモデルには、users
これらの問題にマップするプロパティは必要ありません。
マッピングでの現在の試みは次のようになります。
それでMatter
、モデルのプロパティにオプションのFKがありProjectManager
、ユーザーが存在する必要があり、matters
テーブルの列名がproject_manager
.
ただし、これは機能せず、生成された SQL は正しくありませんが、探しているものを取得する方法がわかりません。私がSQLを書くとしたら、次のようになります
entity-framework - Entity Framework、Code First、多重度制約違反
User クラスに本のリストとオプションのお気に入りの本の両方を含めようとしています。以下の SaveChanges() を呼び出すと、エラー メッセージが表示されます
データベースへの変更は正常にコミットされましたが、オブジェクト コンテキストの更新中にエラーが発生しました。ObjectContext が矛盾した状態にある可能性があります。内部例外メッセージ: 多重度制約違反。関係「ConsoleApplication1.User_FavoriteBook」のロール「User_FavoriteBook_Target」の多重度は 1 または 0..1 です。"}
私が達成したいのは、User テーブルに、お気に入りの本の Id を格納する列を持たせることです。これどうやってするの?
メインプログラム:
c# - 非標準の外部キー名を使用している場合、関係の両側を手動でセットアップする必要がありますか?
私はデータベース ファースト プロジェクトに取り組んでおり、EntityTypeConfiguration
クラスを使用してモデルの Fluent 定義をセットアップしています (「リバース エンジニア コード ファースト」ツールを使用して初期クラスを取得しました)。
クラスの 1 つのセットには、2 つのオブジェクトを 1 対多の関係で関連付ける非標準キー n があります。クラスのセットの例を次に示します。
作成するとき、関係を両側から定義する必要がありますか? それとも、片側だけで作成し、もう一方がそれを取得することはできますかEntityTypeConfiguration<Foo>
?EntityTypeConfiguration<Bar>
c# - MS EF v6 Fluent API が EntityClient を使用しないのはなぜですか?
私はEntity Frameworkを初めて使用し、 Lerman の EF ブックを読み終えたところです。残念ながら、EF v4のみを対象としています。私はEF v6のFluent APIを見ていますが、はるかに優れていて使いやすいようです。
残念ながら、EF v6のFluent APIは、少なくとも接続文字列(プロバイダー名)の代わりに使用しているようです。何故ですか?これは、Oracle やその他の非 MS DB では使用できないということですか?SqlClient
EntityClient
c# - Entity Framework でルックアップ テーブルを使用して多対多の関係を表現する
多対多の関係を持つ SQL データベース (正規化されておらず、主キーがなく、スキーマを変更できないインデックスのみ) があります。
予約には多数の顧客が含まれる場合があり、その逆も同様です。Reservation テーブルは、ReservationID と TransactionLineNumber を基にしています。Customer テーブルには、キーとして IPCode があります。
3 つのキーだけを持つこの関係を作成するために使用されるルックアップ テーブルがあります。
以下は私の DbContext 構成コードです。
それぞれのクラスのスニペットと、それらのエンティティ構成を次に示します。
お客様
予約
質問/問題について
実行時に、予約のリストと、予約に関連する各顧客を取得しようとしています。次のサンプル コードを実行します。
LinkedCustomers にはアイテムがないため、2 回目の First() 呼び出しで例外がスローされます。 接続先の DB を見ると、この Customers のリストに 1 つのエントリがあるはずです。
私の構成がどこに悪いのかについての指針はありますか?