首页 > 解决方案 > 具有继承的列顺序 EF Core

问题描述

我有一个 EF Core 3.1 代码优先项目,其中大多数类都继承自一个名为 BusinessObject 的通用基类。

public abstract class BusinessObject
{    
    [Required()]
    [Column("Id", Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Column("Comment", Order = 100)]
    public string Comment { get; set; }

    [Required()]
    [Column("CreatedAt", Order = 101)]
    public DateTimeOffset CreatedAt { get; set; } = DateTime.UtcNow;

    [Required()]
    [Column("CreatedByUserId", Order = 102)]
    public int CreatedByUserId { get; set; }           

    //A few more columns....
}

[Table("MyTable", Schema = "SampleSchema")]
public class MyTable: BusinessObject
{
    [Column("MyColumns1", Order = 1)]
    [MaxLength(256)]
    public string MyColumns1{ get; set; }

    [Column("MyColumns2", Order = 2)]
    [MaxLength(256)]
    public string MyColumns2{ get; set; }
}

如您所见,我想通过数据注释设置列的顺序,我希望创建一个像这样的表:

实际上,迁移确实

我错过了什么?这可以通过 Fluent API 实现吗?我更喜欢数据注释来保持 DBContext 精简。

标签: c#.net-coreentity-framework-core

解决方案


虽然这是一个旧线程,但这与我遇到的问题完全相同,可以使用此处链接中建议的代码解决

https://github.com/premchandrasingh/EFCoreColumnOrder

这源于此处 git hub 上报告的问题

https://github.com/dotnet/efcore/issues/2272

建议在 core 2.0 中修复这个问题,但是有一部分人说并确认不是这种情况,因此导致使用自定义实现。


推荐阅读