如何对EF Core 2.1中的继承列进行排序?

时间:2018-07-20 13:19:01

标签: c# sql-server ef-core-2.1

我使用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

您能告诉我如何解决数据库列的排序吗? 谢谢!

我是英语的初学者,如果我的单词或句子有问题,我很抱歉。

2 个答案:

答案 0 :(得分:1)

这是我在EF Core 2.1 Preview 1发布时提交的Entity Framework Core的未解决问题,但尚未修复(当前版本2.1)。

于2018年10月6日更新

实体框架核心团队已计划在明年年初修复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)之前,我们可以像上面那样对列进行排序。

Detailed blog post