迁移目标是2.1.0-rtm-30799,即使Target Framework是.Net Core 2.1

时间:2018-06-10 10:18:48

标签: asp.net-core entity-framework-core ef-migrations

我正在使用VS2017版本15.7.3

我很好奇为什么新的解决方案会创建一个迁移列为2.1.0版的数据库,但是如果通过PM控制台添加了同一个数据库的标识表,则迁移将列为rtm。

证明我的意思的步骤。

我使用ASP.NET Core Web Application模板构建了一个新的解决方案 web application template

为身份验证选择单个用户帐户 as shown here

然后生成的代码显示数据迁移将具有ProductVersion 2.1.0

namespace WebApplication14.Data.Migrations
{
    [DbContext(typeof(ApplicationDbContext))]
    partial class ApplicationDbContextModelSnapshot : ModelSnapshot
    {
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
                .HasAnnotation("ProductVersion", "2.1.0")
                //etc

我运行应用程序,注册用户并单击“迁移已应用”以创建数据库。

creating the database

下一步

  1. 我使用SQL Server对象资源管理器删除所有表。
  2. 我从解决方案中删除了“迁移”文件夹
  3. 在软件包管理器控制台中输入

    添加迁移一个

  4. 现在ApplicationDbContextModelSnapshot引用rtm ProductVersion

    namespace WebApplication14.Migrations
    {
        [DbContext(typeof(ApplicationDbContext))]
        partial class ApplicationDbContextModelSnapshot : ModelSnapshot
        {
            protected override void BuildModel(ModelBuilder modelBuilder)
            {
    #pragma warning disable 612, 618
                modelBuilder
                    .HasAnnotation("ProductVersion", "2.1.0-rtm-30799")
    

    如果我再运行

    更新的数据库

    使用__EMMigrationsHistory

    中列出的rtm产品版本在数据库中创建表

    我想知道这种差异是否符合设计,如果是这样,为什么会这样设计。

0 个答案:

没有答案