Erste Letzte eingefügte Zeilen-id, die mit Hilfe von repository-pattern
Ich bin neu in diesem repository-pattern. Ich habe die folgenden Methoden im repository.
public abstract class Repository<T> : IRepository<T> where T : class
{
private PHOnlineEntities dataContext;
private readonly IDbSet<T> dbset;
protected Repository(IDatabaseFactory databaseFactory)
{
DatabaseFactory = databaseFactory;
dbset = DataContext.Set<T>();
}
protected IDatabaseFactory DatabaseFactory
{
get;
private set;
}
protected PHOnlineEntities DataContext
{
get { return dataContext ?? (dataContext = DatabaseFactory.Get()); }
}
public virtual int Add(T entity)
{
dbset.Add(entity);
dataContext.SaveChanges();
//return id here
}
public virtual void Update(T entity)
{
dbset.Attach(entity);
dataContext.Entry(entity).State = EntityState.Modified;
}
public virtual void Delete(T entity)
{
dbset.Remove(entity);
}
public virtual void Delete(Expression<Func<T, bool>> where)
{
IEnumerable<T> objects = dbset.Where<T>(where).AsEnumerable();
foreach (T obj in objects)
dbset.Remove(obj);
}
public virtual T GetById(long id)
{
return dbset.Find(id);
}
public virtual T GetById(string id)
{
return dbset.Find(id);
}
public virtual IEnumerable<T> GetAll()
{
return dbset.ToList();
}
public virtual IEnumerable<T> GetMany(Expression<Func<T, bool>> where)
{
return dbset.Where(where).ToList();
}
public T Get(Expression<Func<T, bool>> where)
{
return dbset.Where(where).FirstOrDefault<T>();
}
Dies ist mein CustomerRepository-Klasse
public interface ICustomerDetailRepository : IRepository<CustomerDetail>
{
}
///<summary>
///CustomerDetail repository
///</summary>
public class CustomerDetailRepository : Repository<CustomerDetail>, ICustomerDetailRepository
{
///<summary>
///
///</summary>
private PHOnlineEntities _dataContext;
///<summary>
///
///</summary>
protected IDatabaseFactory DatabaseFactory
{
get;
private set;
}
///<summary>
///
///</summary>
///<param name="databaseFactory"></param>
public CustomerDetailRepository(IDatabaseFactory databaseFactory)
: base(databaseFactory)
{
DatabaseFactory = databaseFactory;
}
///<summary>
///
///</summary>
protected PHOnlineEntities DataContext
{
get { return _dataContext ?? (_dataContext = DatabaseFactory.Get()); }
}
}
CustomerDetail Klasse enthält Modell. Es hat all die Entität-Spalte zusammen mit der ID-Spalte.
Wenn ich die entity auf die Datenbank, die ich zurückgeben möchte, zuletzt eingefügte Zeilen-id. Die Id ist die identity-Spalte. Könnte mir jemand helfen zu diesem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie Ihre CustomerDetail Objekt nach dem einfügen, die ID wird bereits besiedelte
Haben Sie eine Schnittstelle zu erstellen, wie:
Machen Sie Ihre Einheiten implementieren, die Schnittstelle und ändern Sie Ihre repository-Klasse: