我有一个类,假设它被称为EntityModel
,我希望使用相同的列创建三个不同的表,如EntityModel
中所定义。我们称之为tbPast
,tbPresent
和tbFuture
。我还希望在实体DbContext
中单独访问它们:
using (var db = new MyContext())
{
var element = db.Past.Find(id);
db.Past.Remove(element);
db.Present.Add(element);
db.SaveChanges();
}
拥有三个表的主要目的是性能:表将有数百万行,最重要的是Present
,有几十行。大多数查询都将在Present
表中进行。
最好的方法是什么?实现具有相同属性的三个模型似乎不适合我。
我正在使用Entity Framework,使用Code First方法,以及ASP.NET MVC 3。
答案 0 :(得分:1)
您不能使用相同的模型来生成具有EF代码优先的单独表。如果您需要进行某种分组,请使用Discriminator
字段并为其添加任何值:Past
Present
Future
。
修改强>
通过table-per-concrete type继承可以实现类似的效果。因此,每种类型都有自己的表格,可以共享大部分(如果不是全部)字段。