'我正在开发一个EF Core
应用程序,其中我继承了entity
中的公共类。当我迁移和更新数据库时,首先创建继承的列,然后创建实体的属性。
只是好奇,我想知道是否可以自动设置SQL表中列创建顺序的方法。
//法典:
public class Employee: BasicEntity
{
[Required(ErrorMessage = "Name is required")]
[StringLength(60, ErrorMessage = "Name can't be longer than 60 characters")]
public string Name { get; set; }
[Required(ErrorMessage = "Age is required")]
public int Age { get; set; }
[Required(ErrorMessage = "DOB is required")]
public DateTime DOB { get; set; }
[Required(ErrorMessage = "City is required")]
public int City { get; set; }
[Required(ErrorMessage = "State is required")]
public int State { get; set; }
[Required(ErrorMessage = "Country is required")]
public int Country { get; set; }
}
[Column(Order=(] 在 EF core 中对列顺序使用数据批注
public class Employee: BasicEntity
{
[Column(Order=0)]
[Required(ErrorMessage = "Name is required")]
[StringLength(60, ErrorMessage = "Name can't be longer than 60 characters")]
public string Name { get; set; }
[Column(Order=1)]
[Required(ErrorMessage = "Age is required")]
public int Age { get; set; }
[Column(Order=2)]
[Required(ErrorMessage = "DOB is required")]
public DateTime DOB { get; set; }
[Required(ErrorMessage = "City is required")]
public int City { get; set; }
[Required(ErrorMessage = "State is required")]
public int State { get; set; }
[Required(ErrorMessage = "Country is required")]
public int Country { get; set; }
}
遗憾的是,EF Core 不支持显式列排序。关于这个问题有很多讨论: https://github.com/dotnet/efcore/issues/2272
可以使用此解决方案向项目添加对显式列排序的支持:https://github.com/premchandrasingh/EFCoreColumnOrder。此解决方案添加了 HasColumnOrder 扩展方法。示例文件夹中有一个使用示例。不要忘记替换 DbContext 中的相应服务。
此外,还可以在 EF 迁移中按正确的顺序手动排列列。