C# 在通用存储库中插入实体后如何返回实体

C# 在通用存储库中插入实体后如何返回实体,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,我使用实体框架并编写了一个通用存储库来实现UnitOfWork模式 我需要返回我插入的实体,以及指定的id public class GenericRepository<TEntity> where TEntity : class { internal AppDb Context; internal DbSet<TEntity> DbSet; public GenericRepository(AppDb context) {

我使用实体框架并编写了一个通用存储库来实现UnitOfWork模式

我需要返回我插入的实体,以及指定的id

public class GenericRepository<TEntity> where TEntity : class
{
    internal AppDb Context;
    internal DbSet<TEntity> DbSet;

    public GenericRepository(AppDb context)
    {
        this.Context = context;
        this.DbSet = context.Set<TEntity>();
    }

    // ...

    public virtual void Insert(TEntity entity)
    {
         DbSet.Add(entity);
    }

    // ...
}
公共类通用存储,其中tenty:class
{
内部AppDb上下文;
内部数据库集;
公共通用存储库(AppDb上下文)
{
this.Context=Context;
this.DbSet=context.Set();
}
// ...
公共虚拟空白插入(TEntity实体)
{
添加(实体);
}
// ...
}
你是说这个

public virtual TEntity Insert(TEntity entity)
{
     return DbSet.Add(entity);
}

,所以只需更改返回类型和类型
return

我认为
DbSet.Add
已经返回了实体,请看一看,这样我就不需要保存来获取新的idRead。不要通过评论答案来扩展你的问题,确保你的问题包含我们和你需要知道的一切。当然,您需要调用
DbContext.SaveChanges()
,否则实体将无法分配数据库生成的ID。是否要在通用存储库的
Insert()
方法中调用
DbContext.SaveChanges()
,完全取决于您自己。如果您想
Insert()
返回已保存到数据库中的实体,是的,您必须在返回前调用
DbContext.SaveChanges()
。@Terry当一个站点每天收到数千个问题时,其中许多问题非常不清楚,如果OP没有更多信息,就无法回答,在你可以提问之前,阅读一些文本是必须的。这不是一个只有几个朋友的论坛,而是一个拥有数十万成员和数百万问题的庞大社区。@CodeCaster我认为这不是强制性的。对于那些只想回答那些符合标准的人提出的问题的人来说,这无疑是有用的。它只是为该网站提供了一个舞台,让它越来越关注服务于内部精英群体,这些精英群体在队伍中已经上升到可以将其他人挤出的程度。