我使用EF Core 2.1创建SQL Server数据库, 但是数据库列排序不会将继承列放在最后, 以下是我的实体代码:
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
}
public class RssBlog : Blog
{
public string RssUrl { get; set; }
}
当前列顺序为:
1.RssUrl
2.BlodId
3.Url
我想要这样的数据库:
1.BlodId
2.Url
3.RssUrl
您能告诉我如何解决数据库列的排序吗? 谢谢!
我是英语的初学者,如果我的单词或句子有问题,我很抱歉。
答案 0 :(得分:1)
这是我在EF Core 2.1 Preview 1发布时提交的Entity Framework Core的未解决问题,但尚未修复(当前版本2.1)。
实体框架核心团队已计划在明年年初修复EF Core 3.0版本中的此问题。
以下是详细信息:https://github.com/aspnet/EntityFrameworkCore/issues/11314
答案 1 :(得分:0)
研究此问题的解决方案时看到的一个技巧。
添加迁移后,您将获得以下脚手架迁移文件
TesseractException
表列的排序结果如下;
migrationBuilder.CreateTable(
name: "RssBlog",
columns: table => new
{
BlogId = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
Url = table.Column<string>(nullable: true),
RssUrl = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_RssBlog", x => x.BlogId);
});
您可以重新排列支架式迁移文件中的列;
BlogId
Url
RssUrl
重新排序后,表列的排序如下所示;
migrationBuilder.CreateTable(
name: "RssBlog",
columns: table => new
{
RssUrl = table.Column<string>(nullable: true),
BlogId = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
Url = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_RssBlog", x => x.BlogId);
});
因此,在ef核心团队发布列排序功能(related issue)之前,我们可以像上面那样对列进行排序。