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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
Entity framework 实体框架继承:按类型排序/分组?_Entity Framework - Fatal编程技术网

Entity framework 实体框架继承:按类型排序/分组?

Entity framework 实体框架继承:按类型排序/分组?,entity-framework,Entity Framework,实体框架(以及我使用它的RIA服务)很好地支持继承。数据库映射可以是单表或多表,在第一种情况下,数据库表包括一个包含类型指示符的指示符列 显然,这个指示器在模型中是不可见的,即使它是一个人想要拥有的东西,以便进行排序和分组 如果我想这样做,我是否必须在基类中引入一个额外的显式类型指示符,或者是否有更好的方法以某种方式按类型排序或分组 我使用的是EF5。是的,我可以想象您想要一个基本类型列表的场景。不幸的是,无法在概念模型中获取鉴别器(指示符)。我能想到的唯一办法就是 db.BaseObjects

实体框架(以及我使用它的RIA服务)很好地支持继承。数据库映射可以是单表或多表,在第一种情况下,数据库表包括一个包含类型指示符的指示符列

显然,这个指示器在模型中是不可见的,即使它是一个人想要拥有的东西,以便进行排序和分组

如果我想这样做,我是否必须在基类中引入一个额外的显式类型指示符,或者是否有更好的方法以某种方式按类型排序或分组


我使用的是EF5。

是的,我可以想象您想要一个基本类型列表的场景。不幸的是,无法在概念模型中获取鉴别器(指示符)。我能想到的唯一办法就是

db.BaseObjects.Where(b => ...)
  .AsEnumerable().Select (b => new {b.GetType().Name, b } )
之后,您可以按类型名称进行排序/分组。但是您不能在
一个可计算的
之前投影(
选择
),因此限制数据大小的唯一方法是过滤(
其中

有一个技巧可以将鉴别器列作为类模型中的可见属性。您可以在表中创建一个仅显示实数鉴别器列值的属性,并将其映射到标记为
DatabaseGeneratedOption.Computed
的属性

请注意,这需要先使用代码(迁移)。插入和更新会带来一些性能,因为EF必须在之后从数据库中读取值