【发布时间】:2020-03-20 03:32:01
【问题描述】:
EFCore 无法在插入后填充标识列。如何在插入后使用 .AddRange() 方法自动填充此属性?顺便说一句,我使用的是 MySql 数据库。
我在 repo 中的 AddRange 方法:
public void AddRange(IQueryable<TEntity> entities)
{
Entities.AddRange(entities);
SaveChanges();
}
我的 BaseEntity 类:
/// <summary>
/// All entities have this values.
/// </summary>
public abstract class BaseEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public DateTime InsertedDate { get; set; }
public DateTime? UpdatedDate { get; set; }
public DateTime? DeletedDate { get; set; }
public bool Active { get; set; }
}
我的一个实体的迁移:
migrationBuilder.CreateTable(
name: "HappyHour",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
InsertedDate = table.Column<DateTime>(nullable: false),
UpdatedDate = table.Column<DateTime>(nullable: true),
DeletedDate = table.Column<DateTime>(nullable: true),
Active = table.Column<bool>(nullable: false),
},
constraints: table =>
{
table.PrimaryKey("PK_HappyHour", x => x.Id);
});
我的迁移模型快照:
modelBuilder.Entity("Entity.HappyHour", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<bool>("Active")
.HasColumnType("tinyint(1)");
b.Property<DateTime?>("DeletedDate")
.HasColumnType("datetime(6)");
b.Property<DateTime>("InsertedDate")
.HasColumnType("datetime(6)");
b.Property<DateTime?>("UpdatedDate")
.HasColumnType("datetime(6)");
b.HasKey("Id");
b.ToTable("HappyHour");
});
Nuget 包的版本:
Microsoft.EntityFrameworkCore : 3.1.1,
MySql.Data.EntityFrameworkCore : 8.0.19,
Pomelo.EntityFrameworkCore.MySql : 3.1.0
这是我的第一个问题。感谢您的帮助。
【问题讨论】:
标签: .net asp.net-core .net-core entity-framework-core