尝试在使用Generic Repository模式时弄清楚如何获取最近添加的实体的Id。一个例子很好。 这是存储库,
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);
}
}
}
entity.Id doen'st存在于此
答案 0 :(得分:1)
如果您在运行时单步执行代码,则会在添加后看到ID
(无论您调用它)属性。
那么,您的问题不是实体框架,而是拥有通用存储库。你需要一种方法来返回你刚刚添加的(再次假设)int ID
。
创建一个界面:
public interface IEntity
{
public int ID { get; set; }
}
让你的所有模特继承它。然后,将类型约束更改为:
public class Repository<T> : IRepository<T> where T : IEnitity
然后,您可以在保存后返回entity.ID
。