分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

.NET MVC5+ EF+AutoFac自动注入框架

发布时间:2023-09-06 01:56责任编辑:白小东关键词:.NETMVC

1、创建一个MVC系统 VIEW显示页面代码:

<link href="~/Content/bootstrap.css" rel="stylesheet" />@model List<EFAutofacMVC.Models.TRA_BargainOrder_Test>@{ ???ViewBag.Title = "index";}<div class="well"> ???<table class="table"> ???????<tr> ???????????<th>订单编号</th> ???????????<th>城市代号</th> ???????????<th>时间</th> ???????????<th>订单状态</th> ???????</tr> ???????<tbody> ???????????@if (Model != null && Model.Any()) ???????????{ ???????????????foreach (var item in Model) ???????????????{ ???????????????????<tr> ???????????????????????<td>@item.BargainOrderCode </td> ???????????????????????<td>@item.CityCode </td> ???????????????????????<td>@item.UpdateTime </td> ???????????????????????<td>@item.OrderStatus </td> ???????????????????</tr> ???????????????} ???????????} ???????</tbody> ???</table></div>

2、Controller控制器

using EFAutofacMVC.Models;using Microsoft.Extensions.Caching.Distributed;using System;using System.Collections.Generic;using System.Data.Entity;using System.Linq;using System.Web;using System.Web.Mvc;using System.Web.Mvc.Html;namespace EFAutofacMVC.Controllers{ ???public class HomeController : Controller ???{ ???????/// <summary> ???????/// 数据库连接 ???????/// </summary> ???????private readonly DefaultDbContext _DbContext; ???????????????//构造器注入 ???????public HomeController(DefaultDbContext context) ???????{ ???????????_DbContext = context; ???????} ???????public ActionResult Index() ???????{ ???????????????????????var data = _DbContext.TRA_BargainOrders.ToList(); ???????????return View(data); ???????} ???}}

3、models实体类

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace EFAutofacMVC.Models{ ???public class TRA_BargainOrder_Test ???{ ???????public int ischeck ???????{ ???????????get; set; ???????} ???????public long TRA_BargainOrder_TestID ???????{ ???????????get; set; ???????} ???????/// <summary> ???????/// 订单编号 ???????/// </summary> ???????public string BargainOrderCode ???????{ ???????????get; set; ???????} ???????/// <summary> ???????/// 城市代号 ???????/// </summary> ???????public string CityCode ???????{ ???????????get; set; ???????} ???????public string ParkUserId ???????{ ???????????get; set; ???????} ???????public int FlowStatus ???????{ ???????????get; set; ???????} ???????public DateTime UpdateTime ???????{ ???????????get; set; ???????} ???????public int OrderStatus ???????{ ???????????get; set; ???????} ???????public int PayStatus ???????{ ???????????get; set; ???????} ???????public DateTime CreateTime ???????{ ???????????get; set; ???????} ???????public string ExpressCode { get; set; } ???????/// <summary> ???????/// 用户ID ???????/// </summary> ???????public int UserID { get; set; } ???}}

4、EF数据库连接

using System;using System.Data.Entity;namespace EFAutofacMVC.Models{ ???public class DefaultDbContext : DbContext,IDependency ???{ ???????public DefaultDbContext():base("SQLConnectionString") ???????{ ???????????????????} ???????/// <summary> ???????/// 交易订单信息 ???????/// </summary> ???????public DbSet<TRA_BargainOrder_Test>TRA_BargainOrders{ get; set; } ?????????}}

 5、仓储接口

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace EFAutofacMVC.IRepository{ ???/// <summary> ???/// Autofac提供一个RegisterAssemblyTypes方法。它会去扫描所有的dll并把每个类注册为它所实现的接口。既然能够自动注入,那么接口和类的定义一定要有一定的规律。我们可以定义IDependency接口的类型,其他任何的接口都需要继承这个接口。 ???/// </summary> ???public interface IDependency ???{ ???}}

6、Global.asax 文件配置

using Autofac;using Autofac.Integration.Mvc;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflection;using System.Web;using System.Web.Mvc;using System.Web.Optimization;using System.Web.Routing;namespace EFAutofacMVC{ ???public class MvcApplication : System.Web.HttpApplication ???{ ???????protected void Application_Start() ???????{ ???????????AreaRegistration.RegisterAllAreas(); ???????????FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); ???????????RouteConfig.RegisterRoutes(RouteTable.Routes); ???????????BundleConfig.RegisterBundles(BundleTable.Bundles); ????????????????????????????????#region 自动注入 ???????????//创建autofac管理注册类的容器实例 ???????????var builder = new ContainerBuilder(); ???????????Assembly[] assemblies = Directory.GetFiles(AppDomain.CurrentDomain.RelativeSearchPath, "*.dll").Select(Assembly.LoadFrom).ToArray(); ???????????//注册所有实现了 IDependency 接口的类型 ???????????Type baseType = typeof(IDependency); ???????????builder.RegisterAssemblyTypes(assemblies) ??????????????????.Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract) ??????????????????.AsSelf().AsImplementedInterfaces() ??????????????????.PropertiesAutowired().InstancePerLifetimeScope(); ???????????//注册MVC类型 ???????????builder.RegisterControllers(assemblies).PropertiesAutowired(); ???????????builder.RegisterFilterProvider(); ???????????var container = builder.Build(); ???????????DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); ???????????#endregion ???????????#region 手动一个一个的进行注入 ???????????// //创建autofac管理注册类的容器实例 ???????????// var builder = new ContainerBuilder(); ???????????// //为这个容器注册它可以管理的类型 ???????????// //builder的Register方法可以通过多种方式注册类型。 ???????????// builder.RegisterType<UserInfoRepository>().As<IUserInfoRepository>(); ???????????// //使用Autofac提供的RegisterControllers扩展方法来对程序集中所有的Controller一次性的完成注册 ???????????// builder.RegisterControllers(Assembly.GetExecutingAssembly());//生成具体的实例 ???????????// //如果使用属性注入 就把上面这句改为 ???????????////builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired(); // 这样支持属性注入 ???????????// var container = builder.Build(); ???????????// //下面就是使用MVC的扩展 更改了MVC中的注入方式. ???????????// DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); ???????????#endregion ???????} ???}}

7 、其余就是在线安装引用ef以及autofac框架的相关包了

.NET MVC5+ EF+AutoFac自动注入框架

原文地址:https://www.cnblogs.com/Warmsunshine/p/9082919.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved