创建.net Core Web API三层架构

下载NuGet 包 Microsoft.EntityFrameworkCore.SqlSer 和Microsoft.EntityFrameworkCore包

1、创建Model 实体层。里面主要存放数据库表,一个类就相当于一张表,类里面属性就是表字段,得和数据库保持一致。

在Startup ConfigureServices类里面添加 //连接数据库

services.AddDbContext<ChContext>(t => { t.UseSqlServer(Configuration.GetConnectionString("CH")); });
services.AddCors(t =>
                 {
                     // 指定能访问的域名
                     t.AddPolicy("LimitRequests", policy =>
                                 {
                                     policy
                                         .AllowAnyHeader()
                                         .AllowAnyMethod()
                                         .AllowAnyOrigin();//允许任何来源的主机访问
                                 });
                 });

在appsettings.json 里面添加连接字符串

"ConnectionStrings": {"CH": "server=127.0.0.1;database=Blockchain;uid=sa;pwd=123456;"}

添加一个数据库类继承:DbContext,存放数据库中的各个表,在数据库类里面 添加构造函数继承:base(dbContext)

public class ChContext: DbContext
{
    public ChContext(DbContextOptions<ChContext> dbContext) : base(dbContext)
    {
    }
    public DbSet<类名> 类名 { get; set; }
}

2、创建DAL数据层。里面主要是对数据库数据的操作。添加Model层引用。

依赖注入的构造方法注入,要访问数据库中的表。

private readonly ChContext _context;
        public UserSeiver(ChContext context)
        {
            _context = context;
        }

3、创建BLL逻辑层。里面主要是对代码逻辑的操作。添加DAL层引用。

依赖注入的构造方法注入,要访问DAL的方法。

 private readonly UserSeiver Seiver;
        public UserMannager(UserSeiver seiver)
        {
            Seiver = seiver;
        }

4、在视图层。里面主要是视图显示。添加BLL层引用。

依赖注入的构造方法注入,要访问BLL的方法。

[ApiController]
    [Route("User")]
    public class UserController : Controller
    {
        private readonly UserMannager Mannager;
        public UserController(UserMannager mannager)
        {
            Mannager = mannager;
        }
        [HttpPost]
        [Route("Login")]
        public T_Users LoginAsync(T_Users model)
        {
            return Mannager.LoginAsync(model);
        }
    }

5、使用 Autofac实现批量注入

下载 Autofac 包和Autofac.Extensions.DependencyInjection 包

创建 AutofacModuleRegister类继承Autofac.Module

public class AutofacModuleRegister : Autofac.Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterAssemblyTypes(GetAssemblyByName("BLL"));
            builder.RegisterAssemblyTypes(GetAssemblyByName("DAL")); 
        }
        /// <summary>
        /// 根据程序集名称获取程序集
        /// </summary>
        /// <param name="assemblyName">程序集名称</param>
        public static Assembly GetAssemblyByName(string assemblyName)
        {
            return Assembly.Load(assemblyName);
        }
    }

在 Program主函数里面添加 .UseServiceProviderFactory(new AutofacServiceProviderFactory())//改用Autofac来实现依赖注入

在Startup 类里面添加 ConfigureContainer方法

public void ConfigureContainer(ContainerBuilder builder)
     {
            // 直接用Autofac注册我们自定义的 
            builder.RegisterModule(new AutofacModuleRegister());
     }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值