首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在EF Core 2.1中对继承列排序?

在EF Core 2.1中,可以使用Fluent API来对继承列进行排序。继承列排序是指在查询结果中按照继承关系的层次进行排序,以便更好地组织和展示数据。

要在EF Core 2.1中对继承列排序,可以按照以下步骤进行操作:

  1. 首先,确保你的数据模型中使用了继承关系。例如,你可能有一个基类BaseEntity和两个派生类DerivedEntity1DerivedEntity2
代码语言:csharp
复制
public class BaseEntity
{
    public int Id { get; set; }
    // 共有属性
}

public class DerivedEntity1 : BaseEntity
{
    // 派生类1的属性
}

public class DerivedEntity2 : BaseEntity
{
    // 派生类2的属性
}
  1. 在DbContext的OnModelCreating方法中使用Fluent API来配置继承关系和排序规则。
代码语言:csharp
复制
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>("DerivedEntity1")
        .HasValue<DerivedEntity2>("DerivedEntity2");

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>(1)
        .HasValue<DerivedEntity2>(2);

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>("DerivedEntity1")
        .HasValue<DerivedEntity2>("DerivedEntity2");

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>(1)
        .HasValue<DerivedEntity2>(2);

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>("DerivedEntity1")
        .HasValue<DerivedEntity2>("DerivedEntity2");

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>(1)
        .HasValue<DerivedEntity2>(2);

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>("DerivedEntity1")
        .HasValue<DerivedEntity2>("DerivedEntity2");

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>(1)
        .HasValue<DerivedEntity2>(2);

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>("DerivedEntity1")
        .HasValue<DerivedEntity2>("DerivedEntity2");

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>(1)
        .HasValue<DerivedEntity2>(2);

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>("DerivedEntity1")
        .HasValue<DerivedEntity2>("DerivedEntity2");

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>(1)
        .HasValue<DerivedEntity2>(2);

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>("DerivedEntity1")
        .HasValue<DerivedEntity2>("DerivedEntity2");

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>(1)
        .HasValue<DerivedEntity2>(2);

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>("DerivedEntity1")
        .HasValue<DerivedEntity2>("DerivedEntity2");

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>(1)
        .HasValue<DerivedEntity2>(2);

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>("DerivedEntity1")
        .HasValue<DerivedEntity2>("DerivedEntity2");

    modelBuilder.Entity<BaseEntity>()
        .HasDiscriminator()
        .HasValue<DerivedEntity1>(1)
        .HasValue<DerivedEntity2>(2);
}

在上述代码中,我们使用HasDiscriminator方法来配置继承关系,并使用HasValue方法来指定派生类的名称和排序值。

  1. 排序查询结果。在查询数据时,可以使用OrderBy方法按照继承关系的层次进行排序。
代码语言:csharp
复制
var entities = dbContext.BaseEntities
    .OrderBy(e => EF.Property<string>(e, "Discriminator"))
    .ToList();

在上述代码中,我们使用OrderBy方法来按照继承列(Discriminator)进行排序。EF.Property方法用于获取继承列的值。

这样,你就可以在EF Core 2.1中对继承列进行排序了。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议你参考腾讯云的官方文档和网站,查找适合你需求的云计算产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【ASP.NET Core 基础知识】--数据库连接--使用Entity Framework Core进行数据库访问

在 Entity Framework CoreEF Core)中,ORM 的概念依然适用,EF Core 提供了 ORM 功能,允许开发者使用 .NET 类型(类和对象)来表示数据库中的表格和数据,...4.2 事务管理 在 Entity Framework CoreEF Core)中,事务管理允许开发者一组相关数据库操作进行原子性处理,这意味着这些操作要么全部成功,要么全部回滚到最初的状态。...使用Value Generated On Add:对于某些自增列),可以使用Value Generated On Add来避免插入时额外的查询。...以下是一个简单的示例,演示了如何在 EF Core 中进行跨数据库操作: 安装相应数据库提供程序的 NuGet 包。...文章首先介绍了EF Core的的基本概念,然后讲解了EF Core连接数据库,如何在多数据库环境下使用EF Core,以及需要注意的性能和兼容性问题。

19700

EntityFramework Core 学习扫盲

计算 计算指的是的数据由数据库计算生成,在EF CORE层面,我们只需要定义计算规则即可。目前EF CORE 1.1 版本中,暂不支持使用Data Annotations方式定义。...继承 继承通常被用来控制实体类接口如何映射到数据库表结构中。在EF CORE 当前版本中,TPC和TPT暂不被支持,TPH是默认且唯一的继承方式。...顾名思义,一种继承结构全部映射到一张表中,比如Person父类,Student子类和Teacher子类,由EF CORE映射到数据库中时,将会只存在Person类,而Student和Teacher将以标识的形式出现...那么在EF CORE中,我们怎么实现这些关系呢? 以下内容用代码的方式给出了一一,一多和多多的关系,两边关系设为不可空。...唯一需要注意的是,关系设置请从子端(User和Blog呈一多对应时,从Blog开始)开始,否则配置不慎容易出现多个外键的情况。

9.5K90

Linux性能检查命令总结

如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?...ps -Lp 进程号 cu 查看某个进程的cpu消耗排序 cat /proc/cpuinfo |grep 'processor'|wc -l 查看cpu核数 top 查看cpu总体消耗,包括分项消耗...grep "2017:05:22" cookielog | awk '($12>0.3){print $12 "--" $8}' | sort > 目录地址 apache或者nginx访问log...进行响应时间排序,$12表示cookie log中的12表示响应时间 用于排查是否是由于是某些访问超长造成整体的RT变长 grep -v 'HTTP/1.1" 200' 取出非200响应码的URL...注意会导致full gc gcore [pid] 导出完成的内存快照 通常和jmap -permstat /opt/**/java gcore.bin 一起使用,将core dump转换成heap

2K40

01-EF Core笔记之创建模型

使用EF Core的第一步是创建数据模型,模型建的好,下班走的早。EF Core本身已经设置了一系列约定来帮我们快速的创建模型,例如表名、主键字段等,毕竟约定大于配置嘛。...在数据库中,数据表之间的关系可以分为一一、一多、多多三种,在实体之间同样有这三种关系,但是EF Core仅支持一一、一多关系,如果要实现多多关系,则需要通过关系实体进行关联。...继承 关于继承关系如何在数据库中呈现,目前有三种常见的模式: TPH(table-per-hierarchy):一张表存放基类和子类的所有,使用discriminator区分类型,目前EF Core...):基类和子类不在同一个表中,子类中包含基类的所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,基类和子类数据将存储在同一个表中。...当发现有继承关系时,EF Core会自动维护一个名为Discriminator的阴影属性,我们可以设置该字段的属性: modelBuilder.Entity() .Property(

3K20

GZY.Quartz.MUI(基于Quartz的UI可视化操作组件) 2.6.0发布 兼容.Net8.0

前言 为了迎接.Net8.0 2.6.0终于发布了~ 更新内容: 兼容.NET8.0 新增界面按分组名称排序功能 优化本地持久化时文件路径异常的问题 优化数据库持久化时偶现的异常问题 新增简易授权,增加维护界面安全性...支持通过DLL反射调用本地继承了IJobService的本地方法,并支持动态传参 更新详细说明 1.支持分组排序 其实早就应该支持这个功能,方便用户体验,这里感谢各位博友的反馈 2.调整本地持久化存储路径...处理NET8.0的根目录路径问题 3.优化数据库持久化时偶现的异常问题 这个问题排查了很久,因为项目很久之前就开始弄了,所以当时采用的EF Core是2.1版本 后续虽然支持库升级到5.0和6.0,但是...EF Core 也只是更新到了3.1版本,导致兼容性确实有问题 本次将依赖库重新构建,根据.NET的版本来调整EF Core的依赖版本,解决这个问题,依赖版本如下图: 结束语 项目升级内容就介绍到这里拉

46610

一款EF Core下高性能、轻量级针对分表分库读写分离的解决方案

前言 今天大姚给大家分享一款EF Core下高性能、轻量级针对分表分库读写分离的解决方案,开源(Apache License)的EF Core拓展程序包:ShardingCore。...ShardingCore项目介绍 ShardingCore是一款开源、简单易用、高性能、普适性,针对EF Core生态下的分表分库的扩展解决方案,支持EF Core2+的所有版本,支持EF Core2+...具有极少数的客户端分片中间件下才有的流式聚合,和特定的高性能分页,具有低内存高性能O(n),并且支持顺序分页,反向分页,追加排序。...多数据库支持,只要是EF Core2+支持的数据库ShardingCore都是支持的。 等等等......EF Core介绍 Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术,EF Core 是适用于 .NET 的现代对象数据库映射器

9510

C# 数据操作系列 - 6 EF Core 配置映射关系

EF Core 入门》篇中,我们简单的通过两个类演示了一下EF增删改查等功能。细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端倪。没看的小伙伴也不急,这就贴出来。...如果类型不一致,EF则认为该类设置有误。如果没找到符合名称要求的属性,EF会自己添加一个外键属性。 对于一一,EF要求导航属性双方都应该具有外键配置。 一多,EF要求多的一方设置外键。...同时如果在一方这边设置了集合类型的导航属性,那么EF会自动到目标类里寻找外键属性。 说完了一一和一多,那么多多呢? 如果没有声明的话, EF会生成一个中间表。 2....否则,更建议继承一个Configuration接口。...总结 在这一篇领着大家看了一下EF Core对于映射关系这一部分的内容,我留下了外键相关的FluentAPI介绍,我打算在下一篇介绍。因为这部分的内容比较麻烦,而且使用率也相当高。

2.7K21

.NET周刊【5月第3期 2024-05-19】

通过创建业务模型类并继承 ModelPermissionBase 类,我们可以定义和管理业务模型,从而管控数据行、的权限。...https://www.cnblogs.com/sanshi/p/18194672 本文讨论在 ASP.NET Core 项目中,如何在不需要验证特定模型属性的情况下处理文件上传。...Core RazorPages 中可以在 BaseModel 基类中重载 OnPageHandlerExecuting 方法来回发请求进行身份验证和操作中断。...BaseModel 继承自 PageModel,通过检查请求数据或 Cookie 来确定访问的有效性,无效访问将弹出错误提示,并中断页面加载和回发事件。...其中,IInvoker 接口负责发起调用,并请求进行添加遥测字段、压缩等额外处理。调用管道有三种常见的类型:Leaf invoker、Interceptor 和 Pipeline。

8600

.NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

2.4.3 EF Core -- 基础与配置 连接字符串 异步编程 日志 DbContext池 类和配置表 属性和配置 并发token 索引 Entity Framework Core:https:/.../docs.microsoft.com/zh-cn/ef/core/ 连接字符串 连接字符串:https://docs.microsoft.com/zh-cn/ef/core/miscellaneous...上下文池可以通过重复使用上下文实例,而不是为每个请求创建新实例,从而提高大规模方案( web 服务器)的吞吐量。...在将上下文实例添加到池中之前,EF Core 仅重置它知道的状态。 除高度优化的方案外,池的性能提升通常可以忽略不计。...包含和排除的属性 列名 键 自动生成 包含和排除的属性 实体属性:https://docs.microsoft.com/zh-cn/ef/core/modeling/entity-properties

73911

.NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

2.4.3 EF Core -- 基础与配置 连接字符串 异步编程 日志 DbContext池 类和配置表 属性和配置 并发token 索引 Entity Framework Core:https:/.../docs.microsoft.com/zh-cn/ef/core/ 连接字符串 连接字符串:https://docs.microsoft.com/zh-cn/ef/core/miscellaneous...上下文池可以通过重复使用上下文实例,而不是为每个请求创建新实例,从而提高大规模方案( web 服务器)的吞吐量。...在将上下文实例添加到池中之前,EF Core 仅重置它知道的状态。 除高度优化的方案外,池的性能提升通常可以忽略不计。...包含和排除的属性 列名 键 自动生成 包含和排除的属性 实体属性:https://docs.microsoft.com/zh-cn/ef/core/modeling/entity-properties

94320

一步步学习EF Core(3.EF Core2.0路线图)

因为EF Core是一个新的代码库,所以在Entity Framework 6.x中存在一个功能并不意味着会在EF Core中实现。...其中一部分已经在预览1完成了 存储过程映射,允许EF使用存储过程来保存对数据库的更改(FromSql已经提供了使用存储过程进行查询的良好支持)。...改进的视图映射,允许EF自动从数据库逆向工程视图或使用迁移维护它们(DBFirst)。 4.高优先级的功能 实体模型 更灵活的属性映射,构造函数参数,get / set方法,属性包等。...简单的类型转换,string => xml。 多多关系没有连接实体。可以与连接实体建立多多关系。 关系数据库的替代继承映射模式,例如每种类型的表(TPT)和每个具体类型TPC的表。...Xamarin在使用EF core还未完全测试. 5.EF Core 2.0(还开发中...)

3K90

浅析Entity Framework Core2.0的日志记录与动态查询条件

EF Core(2.事务与日志) 时过境迁..EF Core也更新到2.0了.....在Entity Framework Core2.0  估计是为了配合ASP.NET Core的日志.所以对这些接口进行了更进一步的包装,也弃用了一些接口和类,:IRelationalCommandBuilderFactory...也就是为什么我们如果在ASP.NET Core中注入自己的日志记录,也可以通过配置来记录相关的SQL操作的原因. 这里我们主要是直接只监控EF Core的日志.....OrderBy("CompanyName") .Select("new(CompanyName as Name, Phone)"); 我们可以看到.where条件可以传递格式化字符串.包括排序与查询...因为它是IQueryable进行的扩展,所以没有数据库不支持的情况..只要有相关的驱动,就可以基于驱动来生成相关的SQL代码..(我这里访问的就是MySQL) .. 写在最后 就到这里了..

1.4K60

EF Core 入门

可以延迟加载需要的数据,外键引用属性、查询结果等 丰富的映射关系,支持一一,一多,多多,甚至继承、单表多实例等 可以使用Linq 进行查询 非Core版的可以通过数据库表生成实体类,两种都可以通过实体类生成表...EF可以使用Fluent式配置,也可以使用配置文件进行配置。 说了一大堆Entity Framework的优点,那么就让我们开始使用Entity Framework Core吧。...因为EF更多的是基于.NET Framework开发的,所以微软以EF为基础针对.net core做了一定的修改,然后EF Core诞生了。可以说EF Core是专门为.net core开发的。...{ get; set; } public int ModelAId { get; set; } public ModelA modelA { get; set; } } 然后创建一个继承自...这是EF Core保留的迁移记录,以便下次使用。 如果项目根目录里没有 blogging.db 这个SQLite文件的话,会自动创建该文件,同时设置好表;如果有,但不是SQLite的文件,则会报错。

2.4K10

如何处理EF Core的多多关系?

多关系不像其他关系那么简单,在这篇文章中,我将向您展示如何创建多多关系以及如何在 EF Core 中使用它们。 模型 多多的简单而实用的例子可能是某种数字电子商务商店。...在本文发表时,EF Core 无法处理这种情况。...看起来EF Core不知道如何处理这种关系,当您尝试添加迁移时,您会得到以下结果: Unable to determine the relationship represented by navigation...,CartItem没有主键, 由于它是多多关系,因此它应该具有复合主键。复合主键类似于常规主键,但它由两个属性()而不是一个属性组成。...从多多中删除 删除是指删除购物车Cart和商品Item之间的关系CartItem。

2.9K20
领券