.NET MVC5+ EF+AutoFac自动注入框架
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自动注入框架的更多相关文章
- ASP.NET MVC Autofac自动注入
依赖注入容器有很多插件,我用过Unity和Autofac,这两个插件给我最明显的感觉就是Autofac很快,非常的快,毕竟是第三方开发的,而Unity相对而言性能比较稳定 下面附上Autofac自动注 ...
- .NET MVC5+ Dapper+扩展+AutoFac自动注入实现
1.首先创建一个MVC项目 定义Model 层 view 层 index.cshtml 控制器层Controllers等文件 2.在线安装或者引用dapper 以及扩展相关包 同时Autofac ...
- Quartz.Net 与 Autofac 自动注入 的整合问题
一.问题发现 今天早上在用 Quartz.Net 做定时扫描异常队列的功能模块时,发现处理异常队列的Job里面的ILog对象服务,Autofac没有自动注入进来. 然后在网上查阅相关资料,无奈发现 Q ...
- .net mvc web api Autofac依赖注入框架-戈多编程
今天自己搭了一套基于三层的依赖注入mvc web api 的依赖注入框架,在此总结下相关配置 1.设置应用程序的.net Framework版本为 4.5 2.通过Nuget 安装autofac包 I ...
- Autofac 依赖注入框架 使用
简介 Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高. 官方网站http://autofac.org/ 源 ...
- Autofac依赖注入框架使用
简介: Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高 控制反转和依赖注入: 控制反转 IOC(Inver ...
- Autofac依赖注入框架
最近使用Autofac框架做项目的依赖注入,感觉挺好用的. 没有深入研究,只是拿来用用,具体可以去官网看看:https://autofac.org/. 这里只是贴一下最近项目的配置: public p ...
- 在ASP.Net Core下,Autofac实现自动注入
之前使用以来注入的时候,都是在xml配置对应的接口和实现类,经常会出现忘了写配置,导致注入不生效,会报错,而且项目中使用的是SPA的模式,ajax报错也不容易看出问题,经常会去排查日志找问题. 于是在 ...
- Autofac手动注入及自动注入示例
参考:http://www.cnblogs.com/xinchuang/archive/2013/05/07/3065433.html#2911661 一.环境 vs2012.mvc4..Net Fr ...
随机推荐
- LVM逻辑卷管理测试——创建逻辑卷
虚拟机里再添加两块硬盘,如下所示: 启动系统后,我们可以看到新添加的两块硬盘为/dev/sdb和/dev/sdc.每个2GB. [root@lxjtest ~]# fdisk -l Disk /dev ...
- 【linux】linux 环境下 安装禅道(转载) -- 跟web服务器无关,无视apache、nginx!!!
下载地址:http://www.zentao.net/download/zentao10.0.beta-80076.html 参考文章 链接 :https://blog.csdn.net/xinxin ...
- 深入浅出DOM基础——《DOM探索之基础详解篇》学习笔记
来源于:https://github.com/jawil/blog/issues/9 之前通过深入学习DOM的相关知识,看了慕课网DOM探索之基础详解篇这个视频(在最近看第三遍的时候,准备记录一点东西 ...
- Maven Package Plugins And Maven Test
在使用Maven时候,大家避免不了使用大量插件: 1. maven-compiler-plugin 指定JDK版本和编码方式 ? ?compiler插件能解决2个问题: 第一:指定JDK版本--mav ...
- <转>Boost库之asio io_service以及run、run_one、poll、poll_one区别
本文转自:http://blog.csdn.net/byxdaz/article/details/71088812 一.io_service的作用 io_servie 实现了一个任务队列,这里的任务就 ...
- javascript 基础知识学习1
JavaScript 是脚本语言.浏览器会在读取代码时,逐行地执行脚本代码.而对于传统编程来说,会在执行前对所有代码进行编译.基础知识:1).JavaScript 对大小写敏感.JavaScript ...
- Seqlite学习
之前没有接触过数据库编程,尼玛,面试神码的最恶心了,非得神码都懂点,好吧,最近开始研究下,先从SQLite开始吧,贴上找到SQliteDB.之后搜集资料,慢慢学习!
- SpringBoot配置属性之其他
SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之N ...
- XML 特殊字符处理
在XML中,有一些符号作为XML 的标记符号,一些特定情况下,属性值必须带有这些特殊符号. 下面主要是讲解一些常用的特殊符号的处理 例一: 双引号的使用. 双引号作为XML 属性值的开始结束符号,因此 ...
- 【Spring】SpringMVC非注解配置的两种方式
目录结构: contents structure [+] SpringMVC是什么 Spring MVC的设计原理 SpringMVC配置的第一种方式 1,复制Jar包 2,Web.xml文件 3,M ...