Open
Description
openedon Sep 4, 2024
Consider the following configuration:
public class SomeRandomEntity
{
public long Id { get; set; }
public OwnedEntity? Owned { get; set; }
}
public class OwnedEntity
{
public int OwnedField { get; set; }
}
internal class ReproDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite();
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<SomeRandomEntity>(entity =>
{
entity.HasKey(x => x.Id);
entity.OwnsOne(x => x.Owned);
});
}
}
dotnet ef migrations add
generates a migration with the following code:
migrationBuilder.CreateTable(
name: "SomeRandomEntity",
columns: table => new
{
Id = table.Column<long>(type: "INTEGER", nullable: false),
Owned_OwnedField = table.Column<int>(type: "INTEGER", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_SomeRandomEntity", x => x.Id);
});
Note that Sqlite:Autoincrement
is missing on Id
. This can be 'fixed' by either changing the name of the entity to MyEntity
:
migrationBuilder.CreateTable(
name: "MyEntity",
columns: table => new
{
Id = table.Column<long>(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Owned_OwnedField = table.Column<int>(type: "INTEGER", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_MyEntity", x => x.Id);
});
or by removing Owned
property:
migrationBuilder.CreateTable(
name: "SomeRandomEntity",
columns: table => new
{
Id = table.Column<long>(type: "INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true)
},
constraints: table =>
{
table.PrimaryKey("PK_SomeRandomEntity", x => x.Id);
});
Reverting Microsoft.EntityFrameworkCore.Sqlite
and Microsoft.EntityFrameworkCore.Design
to 6.0.33
also fixes the issue.
EF Core version: 8.0.8
Database provider: Microsoft.EntityFrameworkCore.Sqlite
Target framework: net-8.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment