Tôi đang nỗ lực để thực hiện công việc này. Tôi đã có Unity và các gói Unity.AspNet.WebApi (v 1404/05/03) được cài đặt và mã kích hoạt bên dưới mà đi kèm với các góiGiải quyết dbcontext theo yêu cầu với Unity trong WebApi
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();
}
}
và đăng ký loại của tôi trông như thế này:
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<IAuditService, AuditService>(
new PerThreadLifetimeManager(),
new InjectionConstructor(new SecurityDbContext()));
}
Cho đến nay tôi đã thử PerThreadLifetimeManager và TransientLifetimeManager không thành công. Tôi cũng đã có gói Unity.Mvc và đã thử sử dụng PerRequestLifetimeManager theo gợi ý của msdn nhưng không may mắn. Nó luôn mang lại cho tôi cùng một thể hiện của dbcontex.
Tôi không bao gồm bất kỳ phụ thuộc MVC nào vì đây hoàn toàn là WebApi nhưng khi tôi cố gắng sử dụng Unity.Mvc, tôi đã kết thúc một số lỗi thời gian chạy http.
Bất kỳ ai có đề xuất/ví dụ tốt để giải quyết dbcontext theo yêu cầu với Unity trong WebApi, tốt nhất là không có bất kỳ phụ thuộc mvc nào?
Không thể nhận được 'SecurityDbContext' này. Đây có phải là tự định nghĩa một lớp mà kế thừa lớp Dbcontext không? – picnic4u
Có SecurityDbContext kế thừa DbContext và đó là nơi tôi thêm ánh xạ EF bằng cách ghi đè phương thức OnModelCreating. – Otake
@Otake như thế nào nó tuyên bố trên Controller để nó hoạt động? Tks – Pascal