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?

InformationsquelleAutor PaRsH | 2013-07-16
Schreibe einen Kommentar