首页 > 解决方案 > 在 EntityFramework 2.1 Fluent API 在插入时设置审计字段

问题描述

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

 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()");

我将不胜感激任何建议。谢谢。

标签: entity-frameworkfluent-interface

解决方案


这可以使用.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 ***')");
}

这是您可以参考的链接:

HasComputedColumnSql 方法

希望这可以帮助,

香港


推荐阅读