0

SQL Server(2008)で次のテーブルを設定したとします。

私のプロジェクトで身長、体重、年齢がと呼ばれるパブリック非エンティティクラスのプロパティでありCharacteristics、コードでそれらを次のようにアドレス指定できるように、EDMXを生成する方法はありますか?

ABoy.Characteristics.Height
ABoy.Characteristics.Weight
ABoy.Characteristics.Age

AGirl.Characteristics.Height
AGirl.Characteristics.Weight
AGirl.Characteristics.Age

私の実際のケースでは、Characteristicクラスに他のメソッドがあるため、これを実行したいと思います。BOYまたはGIRLクラスに追加されない限り、特性をEFで追跡する必要がないため、共通のテーブルは必要ありません。

編集:これを書き留めることで、BOYとGIRLに公開されたCharacteristic型の部分クラスを作成でき、Characteristic型のオブジェクトを返すことができることに気付きました。また、BOYまたはGIRLのインスタンスごとに常に同じオブジェクトを返し、変更が加えられた場合に更新するトラッカーもあります。他の提案のために、これを開いたままにしておきます。

4

2 に答える 2

1

これは、データベースビューを使用して実行できます。Entity Frameworkを使用すると、ビューをエンティティとしてインポートできます。ビューはCRUD操作をサポートしないことに注意してください。

また、行を一意に識別する主キーまたは何らかの方法を含める必要があります。それ以外の場合は、同じデータを持つ多数の行を取得します。

コードでは、AddCharacteristic(Boy boy、Characteristic features)メソッドを使用して、Boy(またはGirl)クラスにこれらのプロパティを設定できます。

于 2012-10-22T22:25:05.773 に答える
1

また、基本タイプが次のようになっているタイプごとのテーブル継承を使用して、標準のEFCRUD操作を許可しながら達成することもできます。

Person
{
  public <guid/int> ID { get; set; }
  public <type> Height { get; set; }
  public <type> Weight { get; set; }
  public <type> Age { get; set; }
}

継承テーブルタイプの場合:

Boy
{
  public <guid/int> ID { get; set; }
}

Girl
{
  public <guid/int> ID { get; set; }
}

(合計3テーブル)

EFで標準的な操作をかなり効果的に行うことができます。また、Type per Tableの継承のパフォーマンスを確認することを強くお勧めしますが、このような単純なテーブル構造を使用すれば、邪魔になることはありません。

于 2012-10-22T22:40:18.480 に答える