entity-framework – Entity Framework继承:按类型排序/分组?

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

显然,这个指示符在模型中是不可见的,即使它是为了按顺序分组而想要的东西.

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

我正在使用EF5.

最佳答案 是的,我可以想象你想要一个基本类型列表的场景.遗憾的是,没有办法在概念模型中获得鉴别器(指示符).我能想到的唯一方法就是这样

db.BaseObjects.Where(b => ...)
  .AsEnumerable().Select (b => new {b.GetType().Name, b } )

之后,您可以按类型名称进行排序/分组.但是你不能在AsEnumerable之前投影(选择),所以限制数据大小的唯一方法是过滤(Where).

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

请注意,这需要special attention代码优先(迁移).并且它需要一些插入和更新的性能,因为EF之后必须从数据库中读取值.

点赞