C# 多个表中的同一型号
我有一个类,假设它叫C# 多个表中的同一型号,c#,entity-framework,C#,Entity Framework,我有一个类,假设它叫EntityModel,我想用相同的列创建三个不同的表,如EntityModel中定义的。让我们调用表tbpass,tbPresent和tbFuture。我还希望在实体DbContext中单独访问它们: using (var db = new MyContext()) { var element = db.Past.Find(id); db.Past.Remove(element); db.Present.Add(element); db.Sa
EntityModel
,我想用相同的列创建三个不同的表,如EntityModel
中定义的。让我们调用表tbpass
,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
表中进行
最好的方法是什么?实现三个具有相同属性的模型似乎不适合我
我使用的是实体框架,采用代码优先的方法,以及ASP.NET MVC 3。您不能使用同一个模型先使用代码生成单独的表。如果需要进行某种类型的分组,请使用鉴别器
字段并将其分配为任何值:过去
现在
未来
编辑:
类似的效果可以通过继承来实现。因此,每种类型都有自己的表,可以共享大部分(如果不是全部)字段。鉴别器
是常规的字符串
属性吗?分离表的目的是,大多数查询将位于Present
表中(有数百万行,最重要的是有几十行的Present
)。如果我使用鉴别器
,使用字符串
和int
任何适合您的东西,性能问题是什么。如果您非常关心性能,请参阅编辑。我将实现鉴别器
,并测量性能-如果不能接受,我将尝试TPC继承。顺便说一下,链接不错!在EF world中,同一实体类型不能映射到不同的表。原因很多。为了你的目的,我会使用@Teoman Soygul答案。