在 asp.net 核心中具有Depedency Injection的工作单元模式



我想将我的项目移动到 ASP.NET 核心框架。我是 asp.net 核心的新手,所以不知道如何使用那里的 UnitOfWork 模式。当我使用 asp.net mvc时,我将解决方案分为3层架构(DAl,BLL,WEB层(。在 BLL 层中,我使用了 Ninject 注入,所以我不需要从我的 WEB 层添加对 DLL 的引用。

public class ServiceModule : NinjectModule
{
    private string connectionString;
    public StandardKernel _kernel;
    IUnitOfWork uow;
    public ServiceModule(string connection)
    {
        connectionString = connection;
        uow = new EFUnitOfWork(connectionString);
    }
    public override void Load()
    {
        Bind<IUnitOfWork>().To<EFUnitOfWork>().WithConstructorArgument(connectionString);
    }
}

但是所有的教程都说 ASP.NET 核心应用程序应该在ConfigureServices(WEB layer(方法中使用核心注入,如下所示:

services.AddTransient<IUnitOfWork, EFUnitOfWork>();

但是,添加引用以从 WEB 添加对 DAL 层的引用是个坏主意。

那么,我该怎么办?添加引用(不这么认为(或编辑我的结构?或者别的什么?

您可以使用扩展方法并将其放入 BLL 库中:

namespace Microsoft.Extensions.DependencyInjection
{
    public static class BllServiceCollectionExtensions
    {
        public static IServiceCollection AddBll(this IServiceCollection services)
        { 
            services.AddTransient<IUserService, UserService>();
            services.AddTransient<ITransactionService, TransactionService>();
        }
    }
}

在您的网络项目中,您可以将其添加到您的启动中.cs就像这样

public void ConfigureServices(IServiceCollection services)
{
    ...
    serivices.AddBll();
    ...
}

最新更新