You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Z.EntityFramework的SingleInsertAsync插入如何获取IDENTITY自增ID

解决SingleInsertAsync插入后无法获取自增ID的问题

Z Entity Framework Extensions的SingleInsertAsync方法默认不会将数据库生成的字段值(比如自增主键ID)回写到传入的实体对象中,所以插入后读取ID会得到默认值0,可通过以下方式解决:

方法1:单次调用启用输出映射

在调用SingleInsertAsync时传入配置委托,开启AutoMapOutputDirection参数即可触发回写逻辑,修改后的代码如下:

Specification newSpecification = db.Specifications.Create();

newSpecification.ID_Feature = featureID;
newSpecification.Specification1 = specificationKey;

// 新增配置开启输出值回写
await db.Specifications.SingleInsertAsync(newSpecification, options => 
{
    options.AutoMapOutputDirection = true;
});

int id = newSpecification.ID; // 此时即可拿到数据库生成的真实ID

注意事项

  • 确保实体的主键ID属性已正确配置为数据库生成的自增列,可通过特性标记:
public class Specification
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    // 其他字段定义
}
  • 如果你需要全局开启该配置,可以在项目启动时配置全局默认选项:
Z.EntityFramework.Extensions.EntityFrameworkManager.Defaults.AutoMapOutputDirection = true;

全局配置后所有SingleInsertAsync/BulkInsertAsync等扩展方法默认都会回写数据库生成的字段值,不需要每次调用单独传配置。

内容的提问来源于stack exchange,提问作者André Reichelt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:54:04