2

と呼ばれるクラスがあり、EntityModelで定義されているように、同じ列を持つ3つの異なるテーブルを作成したいとしますEntityModeltbPastテーブルを、、tbPresentと呼びましょうtbFuture。エンティティ内で個別にアクセスしたいDbContext

using (var db = new MyContext())
{
    var element = db.Past.Find(id);
    db.Past.Remove(element);
    db.Present.Add(element);
    db.SaveChanges();
}

3つのテーブルを持つ主な目的はパフォーマンスです。テーブルには数百万の行があり、最も重要なのはPresent数十の行があるです。ほとんどのクエリはPresentテーブルで行われます。

これを行うための最良の方法は何ですか?同じプロパティで3つのモデルを実装することは、私には適切ではないようです。

私は、ASP.NET MVC 3とともに、CodeFirstアプローチでEntityFrameworkを使用しています。

4

1 に答える 1

1

同じモデルを使用して、EFコードファーストで個別のテーブルを生成することはできません。ある種のグループ化が必要な場合は、Discriminatorフィールドを使用して、次のいずれかの値を割り当てますPast Present Future

編集:

同様の効果は、コンクリートごとのテーブルタイプの継承によって実現できます。したがって、各タイプには独自のテーブルがあり、ほとんどの(すべてではないにしても)フィールドを共有できます。

于 2012-05-11T21:27:27.147 に答える