如何使用 UnitOfWork 模式从 Add 中获取 id?

bri*_*nch 7 c# asp.net asp.net-mvc entity-framework unit-of-work

我正在使用 UnitOfWork 模式来抽象我的 Asp.Net 应用程序中的数据库访问。基本上我遵循此处描述的 UnitOfWork 模式方法:

https://chsakell.com/2015/02/15/asp-net-mvc-solution-architecture-best-practices/

但是,我很难理解,我将如何获得新添加项目的 ID。就像我想向我的客户存储库添加新客户一样,我将如何获得客户 ID?问题是Add和Commit是解耦的,直到Commit之后才知道Id。

有没有办法使用 UnitOfWork 模式获取添加项的 id?

Ali*_*aig 0

我认为没有办法做到这一点,除非您打破模式并传递有关新创建实体的一些额外信息。

由于只有在提交成功后才会分配 Id,并且如果您没有有关创建/更新/删除哪些实体的信息,则几乎不可能知道。

我曾经使用下面的代码做过它(虽然我不推荐它,但我专门用它来满足这个需要)

public string Insert(Person entity)
{
    uow.Repository.Add(entity); //public Repository object in unit of work which might be wrong
    Response responseObject = uow.Save();
    string id = entity.Id;  //gives the newly generated Id
    return id;
}
Run Code Online (Sandbox Code Playgroud)