Bu işi yapmak için uğraşıyorum. Ben yüklü Birlik ve Unity.AspNet.WebApi paketlerini (v 1404/05/03) var ve paketlerin WebApi'de birlik ile istek başına dbcontext'in çözülmesi
public static class UnityWebApiActivator
{
/// <summary>Integrates Unity when the application starts.</summary>
public static void Start()
{
var container = UnityConfig.GetConfiguredContainer();
var resolver = new UnityHierarchicalDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;
// DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule));
}
/// <summary>Disposes the Unity container when the application is shut down.</summary>
public static void Shutdown()
{
var container = UnityConfig.GetConfiguredContainer();
container.Dispose();
}
}
ve benim tipim kaydı ile aktivasyon kodunu aşağıdaki gibi görünür ettik:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<IAuditService, AuditService>(
new PerThreadLifetimeManager(),
new InjectionConstructor(new SecurityDbContext()));
}
Şimdiye kadar PerThreadLifetimeManager ve TransientLifetimeManager denemeyi denemedim. Ayrıca Unity.Mvc paketini aldım ve msdn tarafından önerilen ancak hiç şansın olmadığı şekilde PerRequestLifetimeManager'ı kullanmayı denedim. Her zaman bana aynı dbcontex örneğini verir.
Bu, tamamen WebApi olduğu için MVC bağımlılığı eklememeyi tercih ediyorum ancak Unity.Mvc kullanmayı denediğimde, bazı http çalışma zamanı hataları da sonlandırdım.
Herkes, herhangi bir mvc bağımlılığı olmaksızın WebApi'deki birlik ile istek başına dbcontext çözümlemek için iyi bir öneri/örnek var mı?
değil bu 'SecurityDbContext' elde edebilmek. Bu, Dbcontext sınıfını miras alan bir sınıf olarak tanımlanmış bir sınıf mı? – picnic4u
Evet SecurityDbContext, DbContext'i miras alır ve OnModelCreating yöntemini geçersiz kılarak EF eşlemelerini eklediğim yerdir. – Otake
@Operatörün nasıl çalıştığını kontrol etsin nasıl? Tks – Pascal