私は、ASP.NETアプリケーションのエンティティフレームワークでWCF機能を使用しています。 目標は、例えば参照IoCコンテナにdbcontextを保つことである。Castle Windsor LifeStyle for WCF?
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)CustomerGetById(からWCFメソッドを呼び出し)、dbcontextをここでインスタンス化され _dbContext.ContextCounter = 0
2)を再び呼び出してdbContextインスタンス化された - 目標が持つことである_dbContext.ContextCounter = 1
を単一のwcfメソッド呼び出しのたびにdbContextの新しいインスタンス これをどのように達成できますか?
ありがとうございます!
あなたはこれを言い換えることができますか?*問題は、wcfメソッド呼び出し後DBContextのanceが保存されます。私は各単一のwcfメソッド呼び出しの後にDBContextの新しいインスタンスを持っていたいと思います。私はこれをどのように達成することができますか?*あなたは何を求めているのか、今どのような行動を見ているのかは明らかではありません –
私は前のコメントに同意します。私はあなたの質問を読んでいる方法から、あなたが望むことをしているはずです。 PerWcfOperationは、IDBContextインスタンスのスコープが現在のWCF要求/メソッドに及ぶことを意味します。 – Sneal
例:1)wcfメソッドを呼び出します。CustomerGetById()、dbcontextがインスタンス化されます。2)wcfメソッドProductGetById()を呼び出すと、以前と同じdbcontextのインスタンスが作成されます。目標は新しいものを作ることです。 ありがとう! – mirt