entity-framework - Entity Framework 继承 : sort/group by type?

标签 entity-framework

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

显然,这个指示符在模型中是不可见的,即使它是人们想要订购和分组的东西。

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

我正在使用 EF5。

最佳答案

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

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

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

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

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

关于entity-framework - Entity Framework 继承 : sort/group by type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15833263/

相关文章:

c# - 具有多个数据库和泛型的 Entity Framework Multi-Tenancy 架构

主键上的 C# EF 导航属性

c# - 在 EF CORE (C# .NET CORE) 上使用 'Average()'

c# - 如何在 winforms 中使用 EF 进行双向数据绑定(bind)?

c# - 使用 ViewModel 更新 EF 实体的 MVC Controller Post 方法

entity-framework - Entityframework 使用 join 方法和 lambda 进行连接

entity-framework - EF 6 基于代码的迁移 : Add not null property to existing entity

performance - 我可以在 EntityFramework 中的 ObjectSet 上使用多少个 Include 以保持性能?

mysql - SQL order by < linq to entity framework 中的字符串

entity-framework - 如何防止 Entity-Framework 生成 N'..' 前缀的 unicode 字符串?