实体框架插入使用 Z.EntityFramework 的 SingleInsertAsync 方法返回 IDENTITY

Posted

技术标签:

【中文标题】实体框架插入使用 Z.EntityFramework 的 SingleInsertAsync 方法返回 IDENTITY【英文标题】:Entity Framework insert using Z.EntityFramework's SingleInsertAsync method returning IDENTITY 【发布时间】:2021-12-29 11:41:06 【问题描述】:

我想使用 Z Entity Framework Extensions 和 SingleInsertAsync 方法将一条记录插入到我的数据库中。但是,我需要新插入的实体的 ID。我怎么能得到那个?我真的找不到这种方法的文档。

这是我的代码:

Specification newSpecification = db.Specifications.Create();

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

await db.Specifications.SingleInsertAsync(newSpecification);

int id = newSpecification.ID;

变量id插入后明显为0。我怎样才能在那里获得实际的身份证?不幸的是,SingleInsertAsync 没有返回任何内容。

【问题讨论】:

【参考方案1】:

SingleInsert 的工作方式与 BulkInsert 方法完全相同,因此您可以使用相同的文档。

该方法不返回标识,但应自动填充标识值。

如果SpecificationID 指定为标识,则会自动填充该值。

查看以下在线示例:https://dotnetfiddle.net/h9Psm7

【讨论】:

在我的项目中不起作用。调用SingleInsertAsync后,我的Entity的ID属性(设置为IDENTITY值)还是0。 您好@AndréReichelt,请与我们的支持人员联系以获取项目。目前几乎不可能确切地知道为什么它不适合你。

以上是关于实体框架插入使用 Z.EntityFramework 的 SingleInsertAsync 方法返回 IDENTITY的主要内容,如果未能解决你的问题,请参考以下文章

使用实体框架插入时设置 Id 字段

实体框架更新/插入多个实体

如果存在则更新行否则使用实体框架插入逻辑[关闭]

实体框架:多对多插入重复

使用实体框架6插入已断开的相关实体

使用实体框架在代码优先迁移中有条件地插入数据