anet-lib/anet

InsertAsync 新增数据后返回主键或实体

ByronFeng opened this issue · 4 comments

InsertAsync 新增数据后返回主键或实体

你好,你们准备什么时候解决这问题,或者有什么其他实现方式

对于 SqlServer,insert 的时候最后 SELECT @@IDENTITY 会返回自增主键

建议采用亮哥的IdGen直接插入主键而不是由数据库自增主键

Hi, @ByronFeng

Anet通用的做法是使用IdGen主动生成主键,所以不需要从数据库返回。如果是自增主键,为使 InsertAsync 返回主键,需要适配各种数据库,这会使基础库变得复杂,所以不计划针对自增主键支持 InsertAsync 返回插入后的Id。

如果需要在执行插入后返回自增主键,你可以根据你的数据库类型(比如SQL Server)这么做:

var id = Db.Query<int>("INSERT INTO Foo OUTPUT INSERTED.ID VALUES (...)").First();

你还可以扩展 ReposityBase 实现针对特定数据库 InsertAsync 通用方法。