Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个表中的同一型号_C#_Entity Framework - Fatal编程技术网

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答案。