繁体   English   中英

列顺序 EF Core 与 inheritance

[英]Column Order EF Core with inheritance

我有一个 EF Core 3.1 代码优先项目,其中大多数类从名为 BusinessObject 的公共基础 class 继承。

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; }
}

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

  • ID
  • 我的专栏1
  • 我的列2
  • 评论
  • 创建时间
  • CreatedByUserId

实际上,迁移确实

  • ID
  • 评论
  • 创建时间
  • CreatedByUserId
  • 我的专栏1
  • 我的列2

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

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

https://github.com/premchandrasingh/EFCoreColumnOrder

这源于 git 集线器上报告的问题

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

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

在 NET 5.0 RC2 中,“order”属性有效!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM