問題タブ [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.

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

c# - ASP.NET MVC コードの最初の TPH が機能せず、サブクラスごとに 1 つのテーブルが作成されるのはなぜですか?

私が理解しているように、階層ごとのテーブルは、最初にasp.net mvcコードのデフォルト(?)です。しかし、抽象基本クラスと 2 つの空のサブクラスを作成すると、移行では、1 つのテーブルに識別子列がある場合、代わりに 2 つの別個のテーブルを作成する必要があります。

2 つのサブクラスを db コンテキストに追加します。

そして、OnModelCreating では何もしません。

私は ASP.NET Boilerplate を使用していますが、私の知る限り、この結果をもたらす設定は変更されていません。TPC を強制する方法は知っていますが、TPH がデフォルトであるため、設定する方法が見つかりません。代わりに TPH を強制する方法はありますか? または、クラスで何か不足していますか?

移行の結果は次のとおりです。

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

c# - TPH EF6.0: 式の値を計算できません

抽象基本クラスから継承された 3 つのクラスがあります。

テーブル 'PortTaskSteps' からデータを取得しようとすると、次のクエリが返されます。

詳細:

ドメイン アセンブリには、Web プロジェクトおよび Web サイトによって参照される上記のクラスが含まれています。Web サイトで関数をデバッグすると、すべてうまくいきます。ただし、Web プロジェクトで同じ関数をデバッグすると、結果は null になります。

スナップショット

Web プロジェクトでテストされた別のシーン: スナップショットに示されているように、「PortTaskSteps」を取得しようとしました。結果は null です。ただし、「textQuery」のコメントを外した後、結果は PortTaskStep のリストになります。

スナップショット

Web プロジェクトの webconfig や環境に問題があると思いますが、ポイントがわかりません...:(

どうすれば問題を解決できますか?

ありがとう!

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

c# - TPH 継承と EF Code-First - 間違った型に対する外部キー制約

TPH スキーマで次のように定義しています。

次に、私のエンティティ関係は次のとおりです。

Paymentsは 2 つのタイプのいずれかになることができますが、一方のタイプだけが に対して FK 制約を持っているという考え方ですFeature。私が次のことをするとき:

エラーが発生します:

INSERT ステートメントが FOREIGN KEY 制約 "FK_dbo.Payment_dbo.Feature_PaymentId" と競合しました

TPH 継承は型固有の FK 制約と互換性がありませんか?

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

asp.net-mvc - ビューモデルを TPH パターンで作成されたモデルにマップする

1 つの基本クラスと 3 つのサブクラス、およびすべてのプロパティを持つ単一の viemodel があります。コントローラーの作成アクションで、このビューモデルを具体的なサブタイプにバインドします。

これが機能しない作成アクションです(エラーマッピングタイプを取得しています):

これはオートマッパーの設定です:

これは機能するコードですが、使用するかどうかは疑問です。

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

c# - Entity Framework の TPH 継承のマッピング構成が間違っていますか?

Code First と FluentApi を使用して、ドメインに TPH 継承戦略を適用しようとしました。

次のドメイン モデルがあります。

そして構成は別々に行きます:

そして最後のピース -従業員と教師の両方で構成される教員クラス。

そして最後に私は例外を得ました:

追加情報: 外部キー コンポーネント 'FacultyId' は、タイプ 'Teacher' で宣言されたプロパティではありません。モデルから明示的に除外されていないこと、および有効なプリミティブ プロパティであることを確認してください。

ここで同様の質問を見つけましたが、少し異なる状況があります。問題は、TeacherConfiguration が EntityConfiguration から継承されているが、EmployeeConfiguration から継承されていないことだと思います。ここで何が問題なのかを見つけるのを手伝ってもらえますか?

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

c# - Entity Framework TPH: 外部キーを DB 列にマップする方法

次のように、Table-Per-Hierarchy パターン (すべての派生クラスに同じ DB テーブル) を使用しています。

基本クラス:

次のように、いくつかの派生クラスは Address を持ちます。

残念ながら、データベースが作成されると、次のようにすべてのアドレス外部キーに対して新しい列が作成されます: Address_Id, Address_Id1...Address_IdN

次のように Address を使用してすべてのクラスに外部キーを明示的に追加することで、これを克服できます。

ただし、このソリューションAddressIdでは、望ましくないクラスにプロパティが必要です。テーブルにマップされたプロパティは public でなければならないため、private または protected として宣言して非表示にすることはできません。

私はこのような流暢なAPIを使用することを考えました:

また

ただし、基本クラスと派生クラスの間のキャストには問題があります。今、私は立ち往生しています…</p>

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

c# - EF 6.1.3 で特定の識別子から行を取得する方法は?

コードファーストモデルで TPH アプローチを使用しています。基本クラスは型WItemで、派生クラスは ですBItem。すべての WItems 行のみを取得したいので、これを作成しました

しかし、私はまだすべての行を取得しますWHERE [Extent1].[Discriminator] IN (N'BItem',N'WItem')}か?