2016-07-13 36 views
0

Ich habe Repository-Muster mit Arbeitseinheit in eine MVC-App implementiert. Hier ist die Umsetzung:MVC Repository-Muster mit Arbeitseinheit

 public interface IUnitOfWork 
    { 
     IStudentRepository Students { get; } 
     ICourseRepository Courses { get; } 
     void Complete(); 
    }` 
` ` 
    public class UnitOfWork : IUnitOfWork 
    { 
     private readonly ApplicationDbContext _context; 

     public IStudentRepository Students { get; private set; } 
     public ICourseRepository Courses { get; private set; } 

     public UnitOfWork(ApplicationDbContext context) 
     { 
      _context = context; 
      Students = new StudentRepository(_context); 
      Courses = new CourseRepository(_context); 
     } 

     public void Complete() 
     { 
      _context.SaveChanges(); 
     } 
    } 

` Meine Frage ist, wenn ich 100s von Repositories haben, was ist der beste Ansatz ein Repository zu initiieren?

Dank

+0

Entity-Framework ist bereits eine Einheit der Arbeit mit Repositories. Warum versuchen Sie das Rad neu zu erfinden? –

Antwort

0

fand ich die Antwort von einem der Kommentare von diesem Video: https://www.youtube.com/watch?v=rtXpYpZdOzM

Anstelle von Endlagern in Konstruktor initialisiert, kann ich Getter wie unten verwenden:

public class UnitOfWork : IUnitOfWork 
{ 
    private readonly ApplicationDbContext _context; 

    private ICourseRepository _courses = null; 
    private IStudentRepository _students = null; 

    public UnitOfWork(ApplicationDbContext context) 
    { 
     _context = context; 
    } 
    public ICourseRepository Courses => _courses ?? (_courses = new CourseRepository(_context)); 
public IStudentRepository Students => _students ?? (_students = new StudentRepository(_context));