我想将我的项目移动到 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();
...
}