InsertAsync 新增数据后返回主键或实体
ByronFeng opened this issue · 4 comments
ByronFeng commented
InsertAsync 新增数据后返回主键或实体
ByronFeng commented
你好,你们准备什么时候解决这问题,或者有什么其他实现方式
WeihanLi commented
对于 SqlServer
,insert 的时候最后 SELECT @@IDENTITY
会返回自增主键
dayAndnight2018 commented
建议采用亮哥的IdGen直接插入主键而不是由数据库自增主键
liamwang commented
Hi, @ByronFeng
Anet通用的做法是使用IdGen主动生成主键,所以不需要从数据库返回。如果是自增主键,为使 InsertAsync 返回主键,需要适配各种数据库,这会使基础库变得复杂,所以不计划针对自增主键支持 InsertAsync 返回插入后的Id。
如果需要在执行插入后返回自增主键,你可以根据你的数据库类型(比如SQL Server)这么做:
var id = Db.Query<int>("INSERT INTO Foo OUTPUT INSERTED.ID VALUES (...)").First();
你还可以扩展 ReposityBase 实现针对特定数据库 InsertAsync 通用方法。