Bug #95281 A "MySQL:AutoIncrement" anotation is missing from the generated migration code i

Submitted: 7 May 2019 14:03 Modified: 8 May 2019 7:05
Reporter: NA TA Email Updates:
Status: Verified Impact on me:
None 
Category:Connector / NET Severity:S3 (Non-critical)
Version:8.0.16 OS:Any
Assigned to: CPU Architecture:Any

[7 May 2019 14:03] NA TA
Description:
The model "Bar" has an owned entity "Baz" and a key "BarId" :

```csharp
public class Bar {
    public Baz Baz { get; set; } // the first property is an owned property
    public int BarId { get; set; } // the second property is a key
}

public class Baz {
    public int Data { get; set; }
}

public class MyContext : DbContext {
    public DbSet<Bar> Bars { get; set; }

    public MyContext() { }
    public MyContext(DbContextOptions<MyContext> options) : base(options) { }

    protected override void OnModelCreating(ModelBuilder modelBuilder) {
        bas.OnModelCreating(modelBuilder);
        var etb = modelBuilder.Entity<Bar>();
        etb.Property(e => e.BarId);
        etb.HasKey(e => e.BarId);
        etb.OwnsOne(e => e.Baz, rob => rob.Property(e => e.Data));
    }
}
```

Running "<code>dotnet ef migrations add InitialCreate</code>" generates the floowing code:

```csharp
public partial class InitialCreate : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.CreateTable(
            name: "Bars",
            columns: table => new
            {
                Baz_Data = table.Column<int>(nullable: false),
                BarId = table.Column<int>(nullable: false)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Bars", x => x.BarId);
            });
    }
    // (snip)
}
```

But it is wrong because the "BarId" column should have a "MySQL:AutoIncrement" annotation.  What I expected is that:

```csharp
public partial class InitialCreate : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.CreateTable(
            name: "Bars",
            columns: table => new
            {
                Baz_Data = table.Column<int>(nullable: false),
                BarId = table.Column<int>(nullable: false)
                    .Annotation("MySQL:AutoIncrement", true) // here!
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Bars", x => x.BarId);
            });
    }
    // (snip)
}
```

On the contrary, the "MySQL:AutoIncrement" annotation is generated correctly if the first property is a key and the second property is an owned property.

FYI: Pomelo.EntityFrameworkCore.MySql generates a migration with an appropriate annotation.

How to repeat:
An complete reprodusable source is here: https://github.com/ganaware/TestMySqlDataMissingAutoIncrementAnnotation

1. Clone: https://github.com/ganaware/TestMySqlDataMissingAutoIncrementAnnotation
2. Remove: "Migrations" directory
3. Run: <code>dotnet ef migrations add InitialCreate</code>
4. Examine: Migrations/*_InitialCreate.cs

FYI: the generated migration code by Pomelo.EntityFrameworkCore.MySql is here: https://github.com/ganaware/TestMySqlDataMissingAutoIncrementAnnotation/tree/pomelo
[8 May 2019 7:05] MySQL Verification Team
Hello!

Thank you for the report test case.

regards,
Umesh

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.050 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.