1

私たちのデータベースには、LookUpsというテーブルがあります(一般的に、lookupsというテーブルはありません)-1。MaritalStaus(LookUpId、description)。2. TypeOfRelations(LookUpid、description)3. Title(LookUpid、description)

この種のテーブルのモデルを定義するための最良の方法は何でしょうか。次のようなジェネリッククラスを作成すると、

public class LookUp<T>
{
//where T is one of lookup kind
}

public class MaritalStatus : LookUp
{
 // no field
}

//タイトルと関係タイプについても同じです。

しかし、私はそれをすべてまとめる方法を混乱させています1.構成のために、すべてのタイプをテーブルなどと一致させる必要がありますか?2.汎用ルックアップにはデータベースにテーブルがありませんか?良いチュートリアルや提案は大歓迎です。ありがとう、ダルジット

4

1 に答える 1

1

あなたはいくつかの概念を混ぜ合わせていると思います。次のスキームで1つのクラスのみを使用してルックアップテーブルにアクセスする予定であると思います。

var maritalStatus = new Lookup<MaritalStatus>();
var typeOfRelations = new Lookup<TypeOfRelations>();

Lookup<T>次に、EFを離れて、ジェネリッククラスを使用してデータベースとの間でデータの読み取りと書き込みを処理する方法を理解します。DbSet<T>EFは、どのテーブルから読み書きするかを事前に知らないため、ジェネリック型が存在しない可能性があるため、この種のアプローチはEFでは不可能です(Tは何でもかまいません)。

これを回避する1つの方法は、EFでタイプごとのテーブルの継承を使用することです。データベーススキーマを変更できる場合は、親ルックアップテーブルを作成し、他のルックアップをすべて親から派生させることができます。次に、EFのタイプごとのテーブル機能を使用.OfType<T>して、クエリ中に拡張メソッドを呼び出すことができます。

それを行う方法についての非常に良い説明については、Morteza Manaviの記事を確認してください: http ://weblogs.asp.net/manavi/archive/2010/12/28/inheritance-mapping-strategies-with-entity-framework-code- first-ctp5-part-2-table-per-type-tpt.aspx

データベーススキーマを変更できない場合は、親クラスの具象テーブルなしで実行できる具象クラスごとのテーブルアプローチを使用できます。これについては、Morteza Manaviの記事( http://weblogs.asp.net/manavi )でも説明されています。 /archive/2011/01/03/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-3-table-per-concrete-type-tpc-and-choosing-strategy-guidelines.aspx

幸運を。

于 2013-03-26T12:49:39.977 に答える