Как пользоваться работать с шаблоном репозитория
Привет Гес,
у меня есть некоторые проблемы в моем шаблоне репозитория.
я хочу получить данные, включая реляционную таблицу...
как это сделать, я не знаю..
пожалуйста, помогите мне и измените мой шаблон репозитория
пожалуйста...
//Context Class public class InstituteContext : DbContext { public InstituteContext() : base("InstituteContext") { Database.SetInitializer(new DropCreateDatabaseIfModelChanges()); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); //Map Student Table modelBuilder.Entity() .ToTable("tblstudent").Property(t => t.Id) .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) .HasColumnName("studentid"); //Map Address Table modelBuilder.Entity<addressdetail>() .Ignore(i => i.AddedBy).Ignore(i => i.AddedDate).Ignore(i => i.ModifiedBy).Ignore(i => i.ModifiedDate) .HasRequired(t=>t.StudentBasicDetail) .WithMany(a=>a.AddressDetails) .HasForeignKey(k=>k.StudentId) .WillCascadeOnDelete(false) .ToTable("tbladdress").Property(t => t.Id) .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) .HasColumnName("addressid"); } } // Student Class public class StudentBasicDetail : BaseEntity { [Column("fullname")] public string FullName { get; set; } [Column("dob")] public DateTime? DateOfBirth { get; set; } [Column("gender")] public string Gender { get; set; } public virtual ICollection AddressDetails { get; set; } } //Address Class public class AddressDetail : BaseEntity { [Column("studentid")] public Int64 StudentId { get; set; } [Column("address")] public string Address { get; set; } [Column("addresstype")] public AddressType AddressType { get; set; } public virtual StudentBasicDetail StudentBasicDetail { get; set; } } // BaseEntity Class public abstract class BaseEntity { [Key] public Int64 Id { get; set; } [Column("addeddate")] public DateTime? AddedDate { get; set; } [Column("addedby")] public string AddedBy { get; set; } [Column("modifieddate")] public DateTime? ModifiedDate { get; set; } [Column("modifiedby")] public string ModifiedBy { get; set; } } // Repository Class internal interface IRepository : IDisposable where T : class { void Add(T entity); void Update(T entity); void Delete(int id); int Save(); // IQueryable GetAll(Expression<func><t,>>[] include); T FindById(int id); } public abstract class Repository : IRepository where T : class { private InstituteContext _context; protected Repository(InstituteContext context) { _context = context; } public void Dispose() { if (_context == null) return; _context.Dispose(); _context = null; } public virtual void Add(T t) { if (t != null) _context.Set().Add(t); } public virtual void Update(T t) { if (t != null) _context.Entry(t).State = EntityState.Modified; } public virtual void Delete(int id) { var obj = FindById(id); _context.Set().Remove(obj); } public virtual int Save() { var savecnt = _context.SaveChanges(); return savecnt; } public virtual IQueryable GetAll(params Expression>[] includeExpressions) { var query = _context.Set().AsQueryable(); return includeExpressions.Aggregate(query, (current, include) => current.Include(include)); } public virtual T FindById(int id) { return _context.Set().Find(id); } } public class InstituteRepository<t> : Repository<t> where T : class { public InstituteContext Context { get; private set; } public InstituteRepository(InstituteContext context) : base(context) { if (context == null) { throw new ArgumentNullException("context"); } Context = context; } }
Спасибо и с уважением
Манамохан
Что я уже пробовал:
Я стараюсь...
использование (VAR repo = new InstituteRepository< studentbasicdetail> (new InstituteContext()))
{
var srch=РЕПО.GetAll (); / / здесь ничего не показывают, как включить таблицу " AddressDetail"
}