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

  1. <link href="~/Content/bootstrap.css" rel="stylesheet" />
  2.  
  3. @model List<EFAutofacMVC.Models.TRA_BargainOrder_Test>
  4. @{
  5. ViewBag.Title = "index";
  6. }
  7.  
  8. <div class="well">
  9. <table class="table">
  10. <tr>
  11. <th>订单编号</th>
  12. <th>城市代号</th>
  13. <th>时间</th>
  14. <th>订单状态</th>
  15. </tr>
  16. <tbody>
  17. @if (Model != null && Model.Any())
  18. {
  19. foreach (var item in Model)
  20. {
  21. <tr>
  22. <td>@item.BargainOrderCode </td>
  23. <td>@item.CityCode </td>
  24. <td>@item.UpdateTime </td>
  25. <td>@item.OrderStatus </td>
  26.  
  27. </tr>
  28.  
  29. }
  30.  
  31. }
  32. </tbody>
  33.  
  34. </table>
  35. </div>

2、Controller控制器

  1. using EFAutofacMVC.Models;
  2. using Microsoft.Extensions.Caching.Distributed;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data.Entity;
  6. using System.Linq;
  7. using System.Web;
  8. using System.Web.Mvc;
  9. using System.Web.Mvc.Html;
  10.  
  11. namespace EFAutofacMVC.Controllers
  12. {
  13. public class HomeController : Controller
  14. {
  15. /// <summary>
  16. /// 数据库连接
  17. /// </summary>
  18. private readonly DefaultDbContext _DbContext;
  19.  
  20. //构造器注入
  21. public HomeController(DefaultDbContext context)
  22. {
  23.  
  24. _DbContext = context;
  25. }
  26.  
  27. public ActionResult Index()
  28. {
  29.  
  30. var data = _DbContext.TRA_BargainOrders.ToList();
  31.  
  32. return View(data);
  33. }
  34.  
  35. }
  36. }

3、models实体类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5.  
  6. namespace EFAutofacMVC.Models
  7. {
  8. public class TRA_BargainOrder_Test
  9. {
  10. public int ischeck
  11. {
  12. get; set;
  13. }
  14.  
  15. public long TRA_BargainOrder_TestID
  16. {
  17. get; set;
  18. }
  19.  
  20. /// <summary>
  21. /// 订单编号
  22. /// </summary>
  23. public string BargainOrderCode
  24. {
  25. get; set;
  26. }
  27. /// <summary>
  28. /// 城市代号
  29. /// </summary>
  30. public string CityCode
  31. {
  32. get; set;
  33. }
  34.  
  35. public string ParkUserId
  36. {
  37. get; set;
  38. }
  39.  
  40. public int FlowStatus
  41. {
  42. get; set;
  43. }
  44.  
  45. public DateTime UpdateTime
  46. {
  47. get; set;
  48. }
  49.  
  50. public int OrderStatus
  51. {
  52. get; set;
  53. }
  54.  
  55. public int PayStatus
  56. {
  57. get; set;
  58. }
  59.  
  60. public DateTime CreateTime
  61. {
  62. get; set;
  63. }
  64. public string ExpressCode { get; set; }
  65. /// <summary>
  66. /// 用户ID
  67. /// </summary>
  68. public int UserID { get; set; }
  69. }
  70. }

4、EF数据库连接

  1. using System;
  2. using System.Data.Entity;
  3. namespace EFAutofacMVC.Models
  4. {
  5. public class DefaultDbContext : DbContext,IDependency
  6. {
  7. public DefaultDbContext():base("SQLConnectionString")
  8. {
  9.  
  10. }
  11.  
  12. /// <summary>
  13. /// 交易订单信息
  14. /// </summary>
  15. public DbSet<TRA_BargainOrder_Test>TRA_BargainOrders{ get; set; }
  16.  
  17. }
  18. }

5、仓储接口

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

6、Global.asax 文件配置

  1. using Autofac;
  2. using Autofac.Integration.Mvc;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Reflection;
  8. using System.Web;
  9. using System.Web.Mvc;
  10. using System.Web.Optimization;
  11. using System.Web.Routing;
  12.  
  13. namespace EFAutofacMVC
  14. {
  15. public class MvcApplication : System.Web.HttpApplication
  16. {
  17. protected void Application_Start()
  18. {
  19. AreaRegistration.RegisterAllAreas();
  20. FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
  21. RouteConfig.RegisterRoutes(RouteTable.Routes);
  22. BundleConfig.RegisterBundles(BundleTable.Bundles);
  23.  
  24. #region 自动注入
  25. //创建autofac管理注册类的容器实例
  26. var builder = new ContainerBuilder();
  27. Assembly[] assemblies = Directory.GetFiles(AppDomain.CurrentDomain.RelativeSearchPath, "*.dll").Select(Assembly.LoadFrom).ToArray();
  28. //注册所有实现了 IDependency 接口的类型
  29. Type baseType = typeof(IDependency);
  30. builder.RegisterAssemblyTypes(assemblies)
  31. .Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract)
  32. .AsSelf().AsImplementedInterfaces()
  33. .PropertiesAutowired().InstancePerLifetimeScope();
  34.  
  35. //注册MVC类型
  36. builder.RegisterControllers(assemblies).PropertiesAutowired();
  37. builder.RegisterFilterProvider();
  38. var container = builder.Build();
  39. DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
  40.  
  41. #endregion
  42.  
  43. #region 手动一个一个的进行注入
  44.  
  45. // //创建autofac管理注册类的容器实例
  46. // var builder = new ContainerBuilder();
  47. // //为这个容器注册它可以管理的类型
  48. // //builder的Register方法可以通过多种方式注册类型。
  49. // builder.RegisterType<UserInfoRepository>().As<IUserInfoRepository>();
  50. // //使用Autofac提供的RegisterControllers扩展方法来对程序集中所有的Controller一次性的完成注册
  51. // builder.RegisterControllers(Assembly.GetExecutingAssembly());//生成具体的实例
  52. // //如果使用属性注入 就把上面这句改为
  53. ////builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired(); // 这样支持属性注入
  54. // var container = builder.Build();
  55. // //下面就是使用MVC的扩展 更改了MVC中的注入方式.
  56. // DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
  57.  
  58. #endregion
  59.  
  60. }
  61.  
  62. }
  63. }

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

.NET MVC5+ EF+AutoFac自动注入框架的更多相关文章

  1. ASP.NET MVC Autofac自动注入

    依赖注入容器有很多插件,我用过Unity和Autofac,这两个插件给我最明显的感觉就是Autofac很快,非常的快,毕竟是第三方开发的,而Unity相对而言性能比较稳定 下面附上Autofac自动注 ...

  2. .NET MVC5+ Dapper+扩展+AutoFac自动注入实现

    1.首先创建一个MVC项目 定义Model 层  view 层 index.cshtml  控制器层Controllers等文件 2.在线安装或者引用dapper 以及扩展相关包 同时Autofac ...

  3. Quartz.Net 与 Autofac 自动注入 的整合问题

    一.问题发现 今天早上在用 Quartz.Net 做定时扫描异常队列的功能模块时,发现处理异常队列的Job里面的ILog对象服务,Autofac没有自动注入进来. 然后在网上查阅相关资料,无奈发现 Q ...

  4. .net mvc web api Autofac依赖注入框架-戈多编程

    今天自己搭了一套基于三层的依赖注入mvc web api 的依赖注入框架,在此总结下相关配置 1.设置应用程序的.net Framework版本为 4.5 2.通过Nuget 安装autofac包 I ...

  5. Autofac 依赖注入框架 使用

    简介 Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高. 官方网站http://autofac.org/ 源 ...

  6. Autofac依赖注入框架使用

    简介: Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高 控制反转和依赖注入: 控制反转 IOC(Inver ...

  7. Autofac依赖注入框架

    最近使用Autofac框架做项目的依赖注入,感觉挺好用的. 没有深入研究,只是拿来用用,具体可以去官网看看:https://autofac.org/. 这里只是贴一下最近项目的配置: public p ...

  8. 在ASP.Net Core下,Autofac实现自动注入

    之前使用以来注入的时候,都是在xml配置对应的接口和实现类,经常会出现忘了写配置,导致注入不生效,会报错,而且项目中使用的是SPA的模式,ajax报错也不容易看出问题,经常会去排查日志找问题. 于是在 ...

  9. Autofac手动注入及自动注入示例

    参考:http://www.cnblogs.com/xinchuang/archive/2013/05/07/3065433.html#2911661 一.环境 vs2012.mvc4..Net Fr ...

随机推荐

  1. 3299 有序数组合并求第K大问题

    题目描述 Description 给出两个有序数组A和B(从小到大有序),合并两个有序数组后新数组c也有序,询问c数组中第k大的数 假设不计入输入输出复杂度,你能否给出一个O(logN)的方法? 输入 ...

  2. 软件申请获取root权限

      申请root的工具类 //获取root权限 RootManager manager=new RootManager(); manager.upgradeRootPermission(getPack ...

  3. (原)torch中threads的addjob函数使用方法

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6549452.html 参考网址: https://github.com/torch/threads#e ...

  4. JavaScript Window Location 当前页面的地址

    window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面. Window Location window.location 对象在编写时可不使用 window ...

  5. Java读写TXT文本

    public String readTxtFile(String filePath) { StringBuffer appInfolistInput = new StringBuffer(); try ...

  6. Redis学习之路(004)- 报错及问题

    在i配置编译的过程中,遇到一下问题: 1. /redis_test: error while loading shared libraries: libhiredis.so.0.13: cannot ...

  7. 树莓派进阶之路 (003) - Raspberry Pi(树莓派)国内软件源

    树莓派自带的软件源是 deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi 由于网站在国外 ...

  8. Linux操作系统中文件结构stat中st_size的说明以及对于文件中洞(Holes)的理解

    文件stat结构体中st_size成员 对于所有的文件类型,st_size成员对其中的普通文件.目录以及符号链接有实在的意义.其中,对于普通文件而言,st_size记录了该文件的实际大小:对于目录而言 ...

  9. wxml解析

    一.数据绑定 wxml中的动态数据均来自于对应js文件中的Page的data,在js中访问Page的data用this.data, 改变data中某个属性的值用setData()方法. Page({ ...

  10. 【转】我离开了 Coverity

    我离开了 Coverity 在写这篇博文的时候,我已经不再是 Coverity 的员工了,我已经在今天下午向公司正式辞职. 走出公司的大门,我觉得一身的轻松.这是我几个月以来第一次感受到加州美丽的阳光 ...