c# - 具有继承的列顺序 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; }
}
如您所见,我想通过数据注释设置列的顺序,我希望创建一个像这样的表:
- ID
- 我的专栏1
- 我的列2
- 评论
- 创建时间
- CreatedByUserId
实际上,迁移确实
- ID
- 评论
- 创建时间
- CreatedByUserId
- 我的专栏1
- 我的列2
我错过了什么?这可以通过 Fluent API 实现吗?我更喜欢数据注释来保持 DBContext 精简。
解决方案
虽然这是一个旧线程,但这与我遇到的问题完全相同,可以使用此处链接中建议的代码解决
https://github.com/premchandrasingh/EFCoreColumnOrder
这源于此处 git hub 上报告的问题
https://github.com/dotnet/efcore/issues/2272
建议在 core 2.0 中修复这个问题,但是有一部分人说并确认不是这种情况,因此导致使用自定义实现。
推荐阅读
- html - 带有可调节多列的角度下拉菜单
- java - 找不到符号 Menu 和 MenuItem
- r - 如何使用原始数据框中的列名和行名将矩阵转换为数据框
- javascript - 对象索引未达到预期的数组
- android - android 发布版本上的 react-native-firebase NullPointerException
- json - 如何将 sqlite 数据库中的数据传递给模板?(使用highcharts制作折线图)
- python - 如何在 python 中绘制两个选定列与时间的分组条形图。我将在下面发布我的数据
- python - 无法使用 Python 将成功登录会话 cookie 传递到类方法中
- java - com4j 在 Eclipse 中工作,但在 jar 中不工作
- sql - 查找库存差异的开始和结束日期