在 EntityFramework 2.1 Fluent API 中设置插入时的审核字段

In EntityFramework 2.1 Fluent API Setting Audit Fields on Insert

使用 Entity Framework 的 Fluent API,我可以使用以下代码在用户 table 中成功插入新行:

 modelBuilder.Entity<User>().ToTable("Users");
 modelBuilder.Entity<User>().HasKey(x => x.UserId);

但是,我还想根据分配给 UserId 的 Guid 设置 CreatedBy 字段。以下代码不起作用:

 modelBuilder.Entity<User>().Property(x => x.CreatedBy)
      .HasDefaultValueSql("SCOPE_IDENTITY()");

如果有任何建议,我将不胜感激。谢谢

这可以使用 .HasComputedColumnSql 来完成。

示例:

modelBuilder.Entity<Contact>()
            .Propery(p => p.LastModified)
            .HasComputedColumnSql("GetUtcDate()");


protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<SalesOrderHeader>()
    .Property(e => e.SalesOrderNumber)
    .HasComputedColumnSql("isnull(N'SO'+CONVERT([nvarchar](23),[SalesOrderID]),N'*** ERROR ***')");
}

这里是link你可以参考:

HasComputedColumnSql Method

希望这对您有所帮助,

香港