Я использую WCF Facility с структурой сущностей в приложении ASP.NET. Цель состоит в том, чтобы сохранить dbcontext в контейнере IoC, см. Пример:
1) Global.asax
protected void Application_Start(object sender, EventArgs e)
{
Container = new WindsorContainer();
Container.AddFacility<WcfFacility>();
Container.Register(
Component.For<IDBContext>().ImplementedBy<DBContext>().LifeStyle.PerWcfOperation()
);
}
2) CustomerService.cs открытый класс CustomerService: ICustomerService {частный только для чтения ICustomerBl customerBl;
public CustomerService(ICustomerBl customerBl)
{
this.customerBl = customerBl;
}
public Customer GetById(int Id)
{
Customer customer = customerBl.GetById(5);
return customer;
}
}
3) CustomerBl.cs
public class CustomerBl : ICustomerBl
{
private ICustomerRepository _repository;
public CustomerBl(ICustomerRepository customerRepository)
{
_repository = customerRepository;
}
public Customer GetById(int Id)
{
return _repository.GetById(5);
}
}
4) CustomerRepository.cs
public class CustomerRepository: ICustomerRepository
{
public IDBContext _dbContext;
public CustomerRepository(IDBContext dbContext)
{
_dbContext = dbContext;
}
public Customer GetById(int Id)
{
_dbContext.ContextCounter = 1;
return new Customer
{
Id = 5,
FirstName = "Joe",
LastName = "Blogg",
Age = 45
};
}
}
5) TestServiceClient
protected void Button1_Click(object sender, EventArgs e)
{
ServiceReference1.CustomerServiceClient customer = new ServiceReference1.CustomerServiceClient();
customer.GetById(5);
}
Я делаю следующее:
1) Вызовите метод wcf из CustomerGetById (), здесь создается экземпляр dbcontext _dbContext.ContextCounter = 0
2) Вызовите снова и создайте экземпляр dbContext - _dbContext.ContextCounter = 1
Цель состоит в том, чтобы иметь новый экземпляр dbContext после каждого отдельного вызова метода wcf. Как я могу этого добиться?
Спасибо!