2012-05-11 44 views
2

我有一个类,假设它叫做EntityModel,我想用EntityModel中定义的相同列创建三个不同的表。我们称之为tbPast,tbPresenttbFuture。我还想separetely访问它们的实体DbContext同一模型在多个表中

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

有三个表的主要目的是性能:该表将拥有数百万行的,而最重要的是Present,几十行。大多数查询将在Present表中进行。

这样做的最好方法是什么?实现三个具有相同属性的模型对我来说并不合适。

我使用实体框架,用代码优先的方法,用ASP.NET MVC 3

+0

在EF世界中,相同的实体类型不能映射到不同的表。出于很多原因。为了您的目的,我会使用@Teoman Soygul答案。 –

回答

1

不能使用同型号W/EF代码首先生成单独的表一起。如果您需要进行某种分组,请使用Discriminator字段并为其指定任意值:PastPresentFuture

编辑:

类似的效果可以通过table-per-concrete type继承来实现。因此,每种类型都有它自己的表格,并且可以共享大多数(如果不是全部的话)字段。

+0

'Discriminator'是一个常规的'string'属性?分离表的目的在于大多数查询将位于“Present”表中(有数百万行,最重要的是具有大约几十行的“Present”)。如果我使用'Discriminator',性能问题是什么? –

+0

一个'string'和'int'任何适合你的东西。如果您对性能非常关注,请参阅编辑。 –

+0

我将执行'Discriminator'并测量性能 - 如果不能接受,我会尝试TPC继承。顺便说一下,尼斯链接! –

相关问题