尝试使用 Entity Framework Core 2.1 插入时态表时出现以下错误。
无法将显式值插入表“db_test.dbo.Department”中的 GENERATED ALWAYS 列。将 INSERT 与列列表一起使用以排除 GENERATED ALWAYS 列,或将 DEFAULT 插入 GENERATED ALWAYS 列。
下面是我的表架构
CREATE TABLE Department
(
DeptID int NOT NULL PRIMARY KEY CLUSTERED,
DeptName varchar(50) NOT NULL,
ManagerID INT NULL,
ParentDeptID int NULL,
SysStartTime datetime2 GENERATED ALWAYS AS ROW START NOT NULL,
SysEndTime datetime2 GENERATED ALWAYS AS ROW END NOT NULL,
PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime)
)
WITH
(
SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.DepartmentHistory)
)
;
我的DbContext
样子是这样的:
modelBuilder.Entity<Department>(entity =>
{
entity.HasKey(e => e.DeptId);
entity.Property(e => e.DeptId)
.HasColumnName("DeptID")
.ValueGeneratedNever();
entity.Property(e => e.DeptName)
.IsRequired()
.HasMaxLength(50)
.IsUnicode(false);
entity.Property(e => e.ManagerId).HasColumnName("ManagerID");
entity.Property(e => e.ParentDeptId).HasColumnName("ParentDeptID");
});
请看一下,让我知道我们如何解决这个问题。我不喜欢修改 db 上下文类,因为我使用 DBScaffold 通过 nuget 控制台生成它,并且每次重新生成它时我都无法手动更新它。