Entity framework 实体框架继承:按类型排序/分组?
实体框架(以及我使用它的RIA服务)很好地支持继承。数据库映射可以是单表或多表,在第一种情况下,数据库表包括一个包含类型指示符的指示符列 显然,这个指示器在模型中是不可见的,即使它是一个人想要拥有的东西,以便进行排序和分组 如果我想这样做,我是否必须在基类中引入一个额外的显式类型指示符,或者是否有更好的方法以某种方式按类型排序或分组Entity framework 实体框架继承:按类型排序/分组?,entity-framework,Entity Framework,实体框架(以及我使用它的RIA服务)很好地支持继承。数据库映射可以是单表或多表,在第一种情况下,数据库表包括一个包含类型指示符的指示符列 显然,这个指示器在模型中是不可见的,即使它是一个人想要拥有的东西,以便进行排序和分组 如果我想这样做,我是否必须在基类中引入一个额外的显式类型指示符,或者是否有更好的方法以某种方式按类型排序或分组 我使用的是EF5。是的,我可以想象您想要一个基本类型列表的场景。不幸的是,无法在概念模型中获取鉴别器(指示符)。我能想到的唯一办法就是 db.BaseObjects
我使用的是EF5。是的,我可以想象您想要一个基本类型列表的场景。不幸的是,无法在概念模型中获取鉴别器(指示符)。我能想到的唯一办法就是
db.BaseObjects.Where(b => ...)
.AsEnumerable().Select (b => new {b.GetType().Name, b } )
之后,您可以按类型名称进行排序/分组。但是您不能在一个可计算的
之前投影(选择
),因此限制数据大小的唯一方法是过滤(其中
)
有一个技巧可以将鉴别器列作为类模型中的可见属性。您可以在表中创建一个仅显示实数鉴别器列值的属性,并将其映射到标记为DatabaseGeneratedOption.Computed
的属性
请注意,这需要先使用代码(迁移)。插入和更新会带来一些性能,因为EF必须在之后从数据库中读取值