問題タブ [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 投票する
2 に答える
1041 参照

c# - EFTPH継承クエリ

私が作成しているシステム、1つのベース、2つの継承されたクラスに非常に単純なTPHセットアップを実装しようとしています。

ただし、継承されたクラスはすべて同じエンティティセットに属しているため、ループを使用するObjectContext内では、基本抽象クラスにしかアクセスできません。具体的なクラスである要素をどのように取得するのかよくわかりませんか?(私もそれをPOCOを使用するように変換しました)。

代替テキスト

次に、エンティティを使用するアプリケーション内で:

CelestialBodiesエンティティが設定されてsecいますが、私が期待するように惑星/衛星はありません。

それらにアクセスするために何をする必要があるのか​​よくわかりません。

ありがとう

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

c# - EF4 CTP5 方法? 継承されたプロパティを関連テーブルのフィールドにマップする

階層ごとのテーブル (TPH) を使用して、変数と派生クラスというエンティティを定義しました。基本クラス「Variable」には、PropertyValues のコレクションが含まれています。

ここで、PropertyValues (テーブル) のエントリにマップする必要がある SpecialProperties (HighLimit など) を定義する SpecialVariable クラス (または複数) を派生させたいと考えています。

私の OnModelCreating 関数は現在次のようになっています。

派生クラスに見栄えの悪いコードを大量に書かずに、これを実現する方法のヒントを教えてください。(パフォーマンスはそれほど重要ではありません。)

よろしくお願いします、

クリス

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

entity-framework - Entity Framework マルチレベル TPH

2 つの異なるテーブルで使用できる Address テーブルがあるとします。SourceID は、結合するテーブルを決定します。これは、TPH と SourceID = 1 という条件を使用して分割されています。これはうまく機能します。また、さらに一歩進んで、2 つの条件 (SourceID = 1 と TypeID =2) を持つ別のエンティティを作成したいと考えています。最初の子エンティティから継承しようとしましたが、生成された SQL は両方の条件を考慮していません (最初の派生エンティティからの SourceID = 1 条件と、新しく派生したエンティティからの TypeID = 2)。

一連の条件に基づいて異なるタイプを持つように、TPH で複数レベルの階層を持つことができる方法はありますか? ご協力いただきありがとうございます!

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

entity-framework - Entity Framework での条件付きマッピング - TPH を使用した OR 操作

のようなエンティティと、 、 、Vehicleなどの 3 つの派生エンティティがあります。この継承階層はTPHで実装されます。CarMotorbikeBicycle

エンティティ マッピング条件は次のとおりです。

  • __disc__ = car車用
  • __disc__ = motorbikeバイク用
  • __disc__ = bicycle自転車用

    次のマッピング条件を使用してVehiclelikeから別の子を派生させるにはどうすればよいですか。MotorVehicle

  • __disc__ = car OR motorbike自動車用

TPTでこの構造を持っていたときに、次のようにデータベースで表示します。

TPH では、このビューは必要ないと思います。

次のように継承を変更できないことに注意してください: Vehicle<-- MotorVehicle<-- Car. Car と Motorbike と Bicycle は既に存在するため、自動車を car と他の子の親として注入することを考えないでください。すべての自動車に何らかのビジネスを割り当てたいだけです。

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

inheritance - TPHモデルを詳細ページに接続する方法

私は次のようなモデルを持っています:

そして、ProductAとProductBの両方で機能するdetails.aspxページを設定する必要があります。だから私はこの方法でそれを行うことを計画しています。

サブクラスからDetailvalueリストを取得する簡単な方法があるはずだと思います。あなたがこの事件を手伝ってくれるなら、私は素晴らしいでしょう。

次に、リピーターを使用し、Product.DetailValueをitemTypeとして使用し、aspxに配置したいと考えています。

注:私は初心者です。TPHについてよく読んでいますが、製品オブジェクトからサブクラスのフィールドに到達する方法を見つけることができません。

敬具、

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

entity-framework - 既存のTPTでTPHを宣言する(コードファースト)

1つの基本抽象クラスを継承するクラスがいくつかあります。これは、Fluent APIを介して既存のデータベースにマップされます(Table-Per-Concrete-Typeを使用します。つまり、どのテーブルにもマップされていない基本抽象クラスです)。

ここで、コードにいくつかの統計を追加したいと思います。私にとって最善の解決策は、3〜4個の新しいクラスにTPHアプローチを使用することです。上記と同じクラスを継承する場合としない場合があります。

しかし、EFがこれらの3〜4つのクラスにTPHアプローチを使用するように指示する方法がわかりません。弁別器付きの正しいテーブルを追加する必要がありますか?それは問題なく使用されますか?または、流暢なAPIを介して何らかの方法で指定する必要がありますか?

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

frameworks - コレクションと TPH 継承による Entity Framework マッピング外部キー

この単純なモデルを TPH 継承でマップしてみます。

マッピングは流暢な記法で行われます このように:

EF にデータベースを作成させると、TestDetail テーブルに 2 つのフィールドが追加されます。

しかし、ベース Dteail クラスの MasterId フィールドが同じ仕事をするので、これらの 2 つのフィールドは常に Null で冗長です。

これらのフィールドをデータベースから削除し、次のようなマスター レコードの詳細を取得しようとすると:

「詳細」プロパティにアクセスすると、例外が発生します: 無効な ColumnName MasterA_Id、MasterB_Id。

私が間違っていることは何ですか?データベースにこれらの 2 つのフィールドを持たずに、このモデルを TPH モードでマップするにはどうすればよいですか?

ご協力いただきありがとうございます。

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

entity-framework - ASP.NET MVC5 ID システムで ApplicationUser クラスをさらに拡張

私は、学生が特定の専門分野の従業員によって処理されるある種の要求を行うことができる大学向けの簡単なアプリケーションを作成しています。

デフォルトの MVC5 ID システムを使用し、TPH パターンを使用して ApplicationUser クラスを拡張したいと考えています。そこで、ApplicationUser に共通のプロパティを追加しました。

次に、ApplicationUser を継承する 2 つのクラスを作成しました。

私が現在望んでいるのは、両方のタイプのユーザーをベースIDとして登録し、asp.netの継承の例のように両方を単一のテーブルに保持することです

私が思ったように、AccountController でユーザー var を初期化するだけで十分です。これは、UserManager に Student または Employee として渡されます。しかし、学生として登録しようとすると、次の例外が発生します。

私のコンテキストクラス:

そしてコントローラのアクションの一部:

ApplicationClass を抽象クラスに設定しようとしましたが、うまくいきませんでした。どんな助けでも大歓迎です。

更新:コード自体に問題はありませんでした。モデルにこれらの変更を加えた後、データベースを削除 (または更新) していません。その後、すべてが正常に機能します。