我有這樣實體框架的DbContext在每個呼叫實例模式WCF
public abstract class BaseRepository<TEntity> : IRepository<TEntity> where TEntity : class
{
protected DbContext _dbContext;
public BaseRepository(DbContext dbContext)
{
_dbContext = dbContext;
}
public TEntity GetByKey(object keyValue)
{
// todo
}
}
像這樣
public CustomerRepository : BaseRepository<Customer> , ICustomerRepository
{
public CustomerRepository(DbContext context) : base (context) { }
public Customer FindCustomerByKey(string key)
{
_dbContext.Set<Customer>().Find(key);
}
}
具體倉庫的倉庫我有這樣
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class CustomerSatisfactionService : ICustomerSatisfactionService
{
private ICustomerRepository _customerRepository;
private IHelpDeskRepository _helpdeskRepository;
public AccountService(ICustomerRepository customerRepository,IHelpdeskRepository helpdeskRepository)
{
_customerRepository = customerRepository;
_helpdeskRepository = helpdeskRepository;
}
public void DoSomethingUsingBothRepositories()
{
// start unit of work
// _customerRepository.DoSomething();
// _helpdeskRepository.DoSomething();
// commit unit of work
}
}
WCF服務
和我正在使用StructureMap注入這樣的DbContext實例
For<DbContext>().Use(() => new MyApplicationContext());
我的問題是,當一個客戶端調用服務,新CustomerSatisfactionService
實例被創建的CustomerRepository
因此新的實例和HelpdeskRepository
創建,但不同的DbContexts。
我想實現工作單元模式,但在DoSomethingWithBothRepositories
方法中,這兩個存儲庫有不同的DbContexts。
有沒有什麼辦法可以告訴結構圖在每次調用的基礎上創建一個DbContext實例?
喜拉吉斯拉夫......似乎這可能是一個解決方案...會嘗試,讓你知道...謝謝。 – 2011-02-15 05:01:40
我在這裏找到了確切的答案http://andreasohlund.net/2009/04/27/unitofwork-in-wcf-using-structuremap/ – 2011-02-19 13:11:14
您的博客鏈接已損壞。 – rboarman 2012-08-13 23:11:27