.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 ...
随机推荐
- PM_LOG
/**查询所有网元的所有粒度**/ SELECT EMS_PM_LOG_ID, SUBNET_ID, AMOID, NE_TYPE, PO_ID, PO_TABLE, GP_BEGIN_TIME, L ...
- 【PHP+JS】uploadify3.2 和 Ueditor 修改上传文件 大小!!
一.写在最开始: 前提条件:服务器php.ini 已经修改了变量[ upload_max_filesize ],可以设定为8M,一般8M足够用了.(重启) 1.uploadify3.2 修改文件大小: ...
- java代码行数计算器
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util. ...
- Dockerfile 构建后端springboot应用并用shell脚本实现jenkins自动构建
Dockerfile 文件构建docker镜像 FROM centos MAINTAINER zh*****eng "z*******ch.cn" ENV LANG en_US.U ...
- 键盘录入, if语句
1.运算符 (1).算数运算符 A:+ - * / % ++ -- 注意:%运算符号取决于被摸数. ++ --的两种用法:1.单独使用 ,都 ...
- javascript 基础知识学习1
JavaScript 是脚本语言.浏览器会在读取代码时,逐行地执行脚本代码.而对于传统编程来说,会在执行前对所有代码进行编译.基础知识:1).JavaScript 对大小写敏感.JavaScript ...
- 【DeepLearning】Exercise:Convolution and Pooling
Exercise:Convolution and Pooling 习题链接:Exercise:Convolution and Pooling cnnExercise.m %% CS294A/CS294 ...
- idea上activiti插件的安装及使用
最近做的东西需要用到activiti,做个笔记 首先下载activti插件- actiBPM File - settings-plugins-Browse-Repositories 搜索 actiBP ...
- MVC2 扩展Models和自定义验证(学习笔记)
当我们利用Visual Studio生成实体类以后,难免会用到验证功能(例如,用户登录时验证用户名是否为空,并加以显示). Visual Studio实体类:实体类 如果直接去编辑Visual Stu ...
- 使用 TensorFlow 的起始步骤
1 学习目标: 学习基本的 TensorFlow 概念 在 TensorFlow 中使用 LinearRegressor 类并基于单个输入特征预测各城市街区的房屋价值中位数 使用均方根误差 (RMSE ...