具有继承的列顺序 EF Core

Ned*_*ers 7 c# entity-framework-core .net-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; }
}
Run Code Online (Sandbox Code Playgroud)

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

  • ID
  • 我的专栏1
  • 我的专栏2
  • 评论
  • 创建时间
  • 创建者用户 ID

实际上,迁移确实

  • ID
  • 评论
  • 创建时间
  • 创建者用户 ID
  • 我的专栏1
  • 我的专栏2

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

Sim*_*ice 3

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

https://github.com/premchandrasingh/EFCoreColumnOrder

这源于 git hub 上报告的问题

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

建议在 core 2.0 中修复此问题,但是有一部分人表示并确认情况并非如此,从而导致使用自定义实现。