使用通用存储库模式时如何获取实体ID

本文关键字:获取 实体 ID 何获取 存储 模式 | 更新日期: 2023-09-27 18:11:26

试图找出如何获得最近添加的实体的Id时使用通用存储库模式。举个例子就好了。这里是Repository,

public class Repository<T> : IRepository<T> where T : class    {
protected DbContext DbContext { get; set; }
protected DbSet<T> DbSet { get; set; }
public Repository(DbContext dbContext)
{
if (dbContext == null)
            throw new ArgumentNullException("dbContext");
        DbContext = dbContext;
        DbSet = DbContext.Set<T>();
    }
 public virtual void Add(T entity)
    {
        DbEntityEntry dbEntityEntry = DbContext.Entry(entity);
        if (dbEntityEntry.State == EntityState.Detached)
        {
            DbSet.Attach(entity);
            dbEntityEntry.State = EntityState.Added;
        }
        else
        {
            DbSet.Add(entity);
        }
   }
}

实体。

使用通用存储库模式时如何获取实体ID

如果您在运行时逐步执行代码,您将看到ID(无论您叫它什么)属性将在添加后填充。

那么,你的问题不在于实体框架,而在于拥有一个通用的存储库。您需要一种方法来返回(再次假设)您刚刚添加的int ID

创建接口:

public interface IEntity
{
    public int ID { get; set; }
}

并从它继承所有的模型。然后,将类型约束更改为:

public class Repository<T> : IRepository<T> where T : IEnitity

则保存后返回entity.ID