Wie zu verwenden eine Einfache Injektor -, Repository-und Kontext - erste code

Ich versuche, Einfache Injektor zu schaffen, mein repository und verwenden Sie es in der Business-Logik-Schicht ( auch ich will PerWebRequest-Methode ) .

In der DAL Schicht ich habe :

public interface IRepository<T> where T : class
{
    void Add(T entity);
    void Delete(T entity);
    void Delete(int id);
    void Update(T entity);
    T GetById(int Id);
    IQueryable<T> All();
    IEnumerable<T> Find(Func<T, bool> predicate);
}

und :

public class EFRepository<T> : IRepository<T>, IDisposable where T : class
{
    #region Members
    protected DbContext Context { get; set; }
    protected DbSet<T> DbSet { get; set; }
    #endregion

    #region Constructors

    public EFRepository(DbContext dbContext)
    {
        if (dbContext == null)
            throw new ArgumentNullException("dbContext");
        Context = dbContext;
        DbSet = Context.Set<T>();
    }

und mein Kontext :

public class PASContext : DbContext, IDbContext
{
    public DbSet<Product> Products { get; set; }
    public DbSet<User> Users { get; set; }

    public PASContext()
        : base("PostAndSell")
    { }
}

Wie Sie sehen können EFRepository hat nur einen Konstruktor, der ein argument - das ist, da will ich mit Einfach Injektor zum erstellen einer Instanz des Kontexts und der übergabe an das repository, während es erstellt wird .

In der BLL habe ich eine Klasse ProductBLL und ich möchte, um alle Produkte in dieser Klasse (mit einigen GetAll-Methode) aus der Datenbank und übergeben Sie es, sagen zu HomeController .

Ich brauche wirklich jemanden zum reden mich durch diese .

Begann ich, durch die Installation der richtigen Pakete aus dem nuger (Einfach Injektor und Einfache Injektor ASP.NET Integration)

auch in meiner global.asax.cs-Datei, unter Application_Start() Funktion die ich Hinzugefügt habe :

var container = new SimpleInjector.Container();

container.RegisterPerWebRequest<IRepository<Product>, EFRepository<Product>>();

aber wo erstelle ich die Context-Instanz ? und wie kann ich es in der business-Schicht ?

InformationsquelleAutor jony89 | 2013-12-15
Schreibe einen Kommentar