小编xpo*_*oci的帖子

从数据库插入ID的问题

我试图通过Entity Framework从数据库中获取最后插入的ID,但是我的问题在某种程度上是唯一的,我无法找到任何解决方案,而是重写了我的整个基础结构和业务层,所以我的所有ID都是Guid,能够手动创建,或在提交后通过另一个数据库调用获取最新记录。

这是问题所在。我有一个三层体系结构,在其中使用UoW,存储库,服务和外观。我将自上而下显示代码,以便您理解。

这是我的门面,在哪里uow.Commit呼唤SaveChanges()

public async Task<int> RegisterUserAsync(UserCreateDto user)
{
        using (var uow = UnitOfWorkProvider.Create())
        {
            var id = _userService.Create(user);
            await uow.Commit();
            return id;
        }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我仅将DTO发送到服务中,我的处理方式是这样的,我也在服务内部进行映射

public virtual int Create(TCreateDto entityDto)
{
        var entity = Mapper.Map<TEntity>(entityDto);
        Repository.Create(entity);
        return entity.Id;
}
Run Code Online (Sandbox Code Playgroud)

最后我的仓库看起来像这样

public TKey Create(TEntity entity)
{
        Context.Set<TEntity>().Add(entity);
        return entity.Id;
}
Run Code Online (Sandbox Code Playgroud)

有一些优雅的解决方案吗?就像我说的那样,我唯一的想法是在提交后将所有Id切换到Guid或第二个Id调用,这并不是很好的解决方案,因为当我想在一个事务中连接两个或多个表时,这是不可能的。

c# entity-framework .net-core asp.net-core ef-core-2.2

3
推荐指数
1
解决办法
73
查看次数