Domanda

Nel tentativo di implementare un'unità di modello di lavoro passando un'unità di un'istanza di lavoro nel mio repository.

relativo codice da Global.asax.

public class SiteModule : NinjectModule
{
    public override void Load() {        
       Bind<IUnitOfWork>().To<SqlUnitOfWork>()
                          .InRequestScope()
                          .WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["Entities"].ConnectionString);

       Bind<IProductRepository>().To<ProductRepository>();
       Bind<ICategoryRepository>().To<CategoryRepository>();
    }
}


costruttori Repository:

public class ProductRepository {
    IUnitOfWork unitOfWork;
    public ProductRepository(IUnitOfWork unitOfWork) {
        this.unitOfWork = unitOfWork;
    }
}

public class CategoryRepository {
    IUnitOfWork unitOfWork;
    public CategoryRepository(IUnitOfWork unitOfWork) {
        this.unitOfWork = unitOfWork;
    }
}


Quello che voglio è che si crea un massimo di 1 istanza di SqlUnitOfWork per ogni richiesta ed è passata nelle mie repository (tramite i loro rispettivi costruttori).

Il metodo InRequestScope() sul abbastanza vincolante IUnitOfWork? Se no come posso raggiungere questo obiettivo?

È stato utile?

Soluzione

Il codice avete funzionerà bene. Una sola istanza di IUnitOfWork sarà data a qualsiasi classe che ne faccia richiesta (tramite costruttore / iniezione proprietà o chiamate al kernel .Get<> ecc.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top