2

同じテーブルを使用する 2 つ以上のモデルがあるシナリオがあります。RecordCareerWorkshopとRecordRecruitmentとしましょう。これは、検証要件、表示名、検証エラー メッセージなどが異なる可能性があるためです。

2 つのモデルを作成し、クラスの上に [Table("record")] を置きます。

例えば:

[Table("records")]
public class RecordCareerWorkshop

[Table("records")]
public class RecordRecruitment

ただし、Web ページを実行すると、次のようなエラー メッセージが表示されます。

エンティティ タイプ 'RecordCareerWorkshop' と 'RecordRecruitment' はテーブル 'Record' を共有できません。これらは同じタイプ階層にないか、それらの間で主キーが一致する有効な 1 対 1 の外部キー関係を持たないためです。

同じテーブルを共有する 2 つのモデルを使用する方法を教えてください。

編集:

テーブルrecordsの同じ基本クラスから両方のモデルを派生させた場合、たとえば:

public class Record

public class RecordCareerWorkShop : Record

public class RecordRecruitment : Record

エラーメッセージが表示されます:

「フィールド リスト」の不明な列「Extent1.Discriminator」

たとえば、コードを実行するたびに:

var records = db.RecordRecruitment.Where(x => x.company_id == id).ToList();

Extent1,Discriminator がどこに表示されるのか本当にわかりません。

4

1 に答える 1

1

ここでは、次の 2 つのルートのいずれかに行くことができます。

  • 同じ基本クラスから両方のモデルを派生させます。
  • エンティティを 1 つだけ含めて、メイン エンティティから供給される 2 つの ViewModel を作成します。

両方のエンティティが関連している場合は、おそらくオプション 1 を使用する必要があります。それらが同じ基本概念の異なる表現である場合は、オプション 2 を使用する必要があります。

于 2013-08-19T07:38:56.537 に答える