I try to write an MVC n tier application. I have used repository pattern during connecting to the database. In my repository class, I have a Context variable inside repository class. I am not sure that this approach is true. Here are my codes:
public class TTPDbContext : DbContext
{
public TTPDbContext() : base("TTPContext")
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<TTPDbContext>());
Database.Log = s => Debug.WriteLine(s);
Configuration.AutoDetectChangesEnabled = true;
}
public DbSet<Kisi> Kisiler { get; set; }
public DbSet<BakanlikBirim> BakanlikBirimleri { get; set; }
public DbSet<DisBirim> DisBirimler { get; set; }
public DbSet<Kullanici> Kullanicilar { get; set; }
public DbSet<Talep> Talepler { get; set; }
public DbSet<UnvanPozisyon> UnvanPozisyonlar { get; set; }
public DbSet<TalepDurum> TalepDurumlar { get; set; }
public DbSet<TalepKagidi> TalepKagidi { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("OsiTtp");
}
}
Here is the repository class:
public class TTPRepository : ITTPRepository,IDisposable
{
private IErrorHandling _errorHandling;
private TTPDbContext _context;
public TTPRepository()
{
this._errorHandling = new ErrorHandling();
this._context = new TTPDbContext();
}
// other sections has been dismissed for brevity.
public List<DisBirim> GetAllExternalInstitutions()
{
List<DisBirim> result = null;
DbSet<DisBirim> intermediaryresult = null;
try
{
result = new List<DisBirim>();
intermediaryresult = this._context.DisBirimler;
if (intermediaryresult != null)
{
foreach (DisBirim institution in intermediaryresult)
{
result.Add(institution);
}
}
}
catch (Exception Hata)
{
this.yazHata(Hata);
}
return result;
}
public void Dispose()
{
this._context.Dispose();
}
}
I am not sure that is a optimal approach. Do you have any recommandations? Thanks in advance.