Я намерен использовать контекст окружения в моем проекте, который описан в этом местоположении .
Я клиент-серверное приложение, клиенты подключены службами WCF.
Теперь вопрос заключается в том, как реализовать поставщик экземпляров WCF.
Подход, который я пробовал, всегда выдает сообщение об ошибке «System.InvalidOperationException: экземпляры DbContextScope должны быть расположены в том порядке, в котором они были созданы!» когда контекст должен быть удален.
Кто-нибудь имеет решение для управления этим?
Код, полученный от моего провайдера экземпляра:
public class MyInstanceProvider<T> : IInstanceProvider, IContractBehavior where T : class
{
DbContextScopeFactory _dbContextScopeFactory;
Dictionary<int, IDbContextScope> _Contexts = new Dictionary<int, IDbContextScope>();
public MyInstanceProvider( DbContextScopeFactory dbContextScopeFactory )
{
_dbContextScopeFactory = dbContextScopeFactory;
}
public object GetInstance( InstanceContext instanceContext )
{
IDbContextScope contextScope = _dbContextScopeFactory.Create();
_Contexts[instanceContext.GetHashCode()] = contextScope;
var _Repository = new RepositoryFactory<T>().GetInstance();
return _Repository;
}
public object GetInstance( InstanceContext instanceContext, Message message )
{
return GetInstance( instanceContext );
}
public void ReleaseInstance( InstanceContext instanceContext, object instance )
{
var hashCode = instanceContext.GetHashCode();
if (_Contexts.ContainsKey( hashCode ))
{
var contextScope = _Contexts[hashCode];
contextScope.Dispose();
_Contexts.Clear();
}
}
...