مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

ali

عضویت از 1392/03/25

استفاده از Repository در سازنده یک Controller mvc

  • جمعه 16 مهر 1395
  • 21:47
تشکر میکنم

با سلام

من در طراحی سایت خودم از یک Repository از نوع abstract استفاده کرده ام و حالا می خوام از اون در کنترلر Home استفاده کنم. به طور خلاصه روال طراحی به صورت زیر است :

 

 public abstract class GenericRepository<T> : IGenericRepository<T> where T : class 
    {
        protected DbContext _entities;
        protected readonly IDbSet<T> _dbset;
        public GenericRepository(DbContext context)
        {
            this._entities = context;
            this._dbset = context.Set<T>();
        }

.

.

.

}

و برای استفاده در کنترلر با پیغام خطایی که داده می شود حتما باید یک سازنده بدون پارامتر از کنترلر وجود داشته باشد. 

در حالی که من متغیر لازم خودم را در یک کنترلر متغیر دار مقدار دهی کرده ام به صورت زیر :

private IGenericRepository<Role> _role = null;

public HomeController(GenericRepository<Role> role)
        {
            _role = role;
        }

ولی با همین سازنده هم باز هنگام ذخیره سازی داده همچنان متغیر role_ با مقدار null باقی می ماند و ایجاد خطا می کند.

می خواستم بدونم چطوری باید هم در سازنده بدون پارامتر اون رو مقدار دهی کنم و چرا در سازنده در حال حاضر وجود دارد مقدار دهی نمی شود.

با تشکر

 

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 17 مهر 1395
  • 09:03

Dependency Injection Container را چگونه پیاده سازی کردید ؟

اگر null است یعنی تزریق انجام نمیشه

کاربر سایت

ali

عضویت از 1392/03/25

  • شنبه 17 مهر 1395
  • 09:58

 

 public interface IGenericRepository<T> where T : class
    {
        IEnumerable<T> GetAll();
        IEnumerable<T> FindBy(Expression<Func<T, bool>> predicate);
        T Add(T entity);
        T Delete(T entity);
        void Edit(T entity);
        void Save();
    }
 public abstract class GenericRepository<T> : IGenericRepository<T> where T : class 
    {
        protected DbContext _entities;
        protected readonly IDbSet<T> _dbset;
        public GenericRepository(DbContext context)
        {
            this._entities = context;
            this._dbset = context.Set<T>();
        }
        public virtual T Add(T entity)
        {
            return _dbset.Add(entity);
        }

 

        public virtual T Delete(T entity)
        {
            return _dbset.Remove(entity);
        }

 

        public virtual void Edit(T entity)
        {
            _entities.Entry(entity).State = System.Data.Entity.EntityState.Modified;
        }

 

        public virtual IEnumerable<T> FindBy(Expression<Func<T, bool>> predicate)
        {
            IEnumerable<T> query = _dbset.Where(predicate).AsEnumerable();
            return query;
        }

 

        public virtual IEnumerable<T> GetAll()
        {
            return _dbset.AsEnumerable<T>();
        }

 

        public virtual void Save()
        {
            _entities.SaveChanges();
        }
    }
}
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 17 مهر 1395
  • 14:28

کدی برای تزریق وابستگی نمیبینم

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)