問題タブ [tph]
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.
c# - ASP.NET MVC コードの最初の TPH が機能せず、サブクラスごとに 1 つのテーブルが作成されるのはなぜですか?
私が理解しているように、階層ごとのテーブルは、最初にasp.net mvcコードのデフォルト(?)です。しかし、抽象基本クラスと 2 つの空のサブクラスを作成すると、移行では、1 つのテーブルに識別子列がある場合、代わりに 2 つの別個のテーブルを作成する必要があります。
2 つのサブクラスを db コンテキストに追加します。
そして、OnModelCreating では何もしません。
私は ASP.NET Boilerplate を使用していますが、私の知る限り、この結果をもたらす設定は変更されていません。TPC を強制する方法は知っていますが、TPH がデフォルトであるため、設定する方法が見つかりません。代わりに TPH を強制する方法はありますか? または、クラスで何か不足していますか?
移行の結果は次のとおりです。
c# - TPH EF6.0: 式の値を計算できません
抽象基本クラスから継承された 3 つのクラスがあります。
テーブル 'PortTaskSteps' からデータを取得しようとすると、次のクエリが返されます。
詳細:
ドメイン アセンブリには、Web プロジェクトおよび Web サイトによって参照される上記のクラスが含まれています。Web サイトで関数をデバッグすると、すべてうまくいきます。ただし、Web プロジェクトで同じ関数をデバッグすると、結果は null になります。
Web プロジェクトでテストされた別のシーン: スナップショットに示されているように、「PortTaskSteps」を取得しようとしました。結果は null です。ただし、「textQuery」のコメントを外した後、結果は PortTaskStep のリストになります。
Web プロジェクトの webconfig や環境に問題があると思いますが、ポイントがわかりません...:(
どうすれば問題を解決できますか?
ありがとう!
c# - TPH 継承と EF Code-First - 間違った型に対する外部キー制約
TPH スキーマで次のように定義しています。
次に、私のエンティティ関係は次のとおりです。
Payments
は 2 つのタイプのいずれかになることができますが、一方のタイプだけが に対して FK 制約を持っているという考え方ですFeature
。私が次のことをするとき:
エラーが発生します:
INSERT ステートメントが FOREIGN KEY 制約 "FK_dbo.Payment_dbo.Feature_PaymentId" と競合しました
TPH 継承は型固有の FK 制約と互換性がありませんか?
asp.net-mvc - ビューモデルを TPH パターンで作成されたモデルにマップする
1 つの基本クラスと 3 つのサブクラス、およびすべてのプロパティを持つ単一の viemodel があります。コントローラーの作成アクションで、このビューモデルを具体的なサブタイプにバインドします。
これが機能しない作成アクションです(エラーマッピングタイプを取得しています):
これはオートマッパーの設定です:
これは機能するコードですが、使用するかどうかは疑問です。
c# - Entity Framework の TPH 継承のマッピング構成が間違っていますか?
Code First と FluentApi を使用して、ドメインに TPH 継承戦略を適用しようとしました。
次のドメイン モデルがあります。
そして構成は別々に行きます:
そして最後のピース -従業員と教師の両方で構成される教員クラス。
そして最後に私は例外を得ました:
追加情報: 外部キー コンポーネント 'FacultyId' は、タイプ 'Teacher' で宣言されたプロパティではありません。モデルから明示的に除外されていないこと、および有効なプリミティブ プロパティであることを確認してください。
ここで同様の質問を見つけましたが、少し異なる状況があります。問題は、TeacherConfiguration が EntityConfiguration から継承されているが、EmployeeConfiguration から継承されていないことだと思います。ここで何が問題なのかを見つけるのを手伝ってもらえますか?
c# - Entity Framework TPH: 外部キーを DB 列にマップする方法
次のように、Table-Per-Hierarchy パターン (すべての派生クラスに同じ DB テーブル) を使用しています。
基本クラス:
次のように、いくつかの派生クラスは Address を持ちます。
残念ながら、データベースが作成されると、次のようにすべてのアドレス外部キーに対して新しい列が作成されます: Address_Id
, Address_Id1
...Address_IdN
次のように Address を使用してすべてのクラスに外部キーを明示的に追加することで、これを克服できます。
ただし、このソリューションAddressId
では、望ましくないクラスにプロパティが必要です。テーブルにマップされたプロパティは public でなければならないため、private または protected として宣言して非表示にすることはできません。
私はこのような流暢なAPIを使用することを考えました:
また
ただし、基本クラスと派生クラスの間のキャストには問題があります。今、私は立ち往生しています…</p>
c# - EF 6.1.3 で特定の識別子から行を取得する方法は?
コードファーストモデルで TPH アプローチを使用しています。基本クラスは型WItem
で、派生クラスは ですBItem
。すべての WItems 行のみを取得したいので、これを作成しました
しかし、私はまだすべての行を取得しますWHERE [Extent1].[Discriminator] IN (N'BItem',N'WItem')}
か?