我想将项目移动到ASP.NET Core框架。我是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层)方法中使用核心注入:
services.AddTransient<IUnitOfWork, EFUnitOfWork>();
但是,添加引用以从WEB添加对DAL层的引用是个坏主意。
那么,我该怎么办?添加引用(不要这么认为)或编辑我的结构?或者其他什么?
答案 0 :(得分:1)
您可以使用扩展方法并将其放入BLL库中:
namespace Microsoft.Extensions.DependencyInjection
{
public static class BllServiceCollectionExtensions
{
public static IServiceCollection AddBll(this IServiceCollection services)
{
services.AddTransient<IUserService, UserService>();
services.AddTransient<ITransactionService, TransactionService>();
}
}
}
在您的Web项目中,您可以将其添加到您的Startup.cs中,如此
public void ConfigureServices(IServiceCollection services)
{
...
serivices.AddBll();
...
}