我以前曾经在SQL代码中使用复合列来做到这一点。
[ID] [int] IDENTITY(1,1) NOT NULL,
[PreFix] [varchar](50) NOT NULL,
[EmployeeNo] AS ([PreFix]+ RIGHT('0000000' + CAST(Id AS VARCHAR(7)), 7)) PERSISTED,
主要有不同的解决方法,最简单的OnModelCreating
方法是修改方法以HasComputedColumnSql
在计算列上使用流利的API函数之一。
代码优先方法
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Employee>()
.Property(e => e.EmployeeNo)
.HasComputedColumnSql("[PreFix]+ RIGHT('0000000' + CAST(Id AS VARCHAR(7)), 7)");
}
数据库优先方法
对于数据库优先方法,您仍然可以在创建表时定义计算逻辑,并在实体框架核心的上下文侧使用以下修改。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Contact>()
.Property(p => p.EmployeeNo)
.ValueGeneratedOnAdd();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句