ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入

系列目录

前言

为了符合后面更新后的重构系统,文章于2016-11-1日重写

本节重构一下代码,采用IOC控制反转,也就是依赖注入

您可以访问http://unity.codeplex.com/releases得到最新版本的Unity现在。

这里http://unity.codeplex.com/documentation我们找到了帮助文档大家可以下载下来看看

当然,如果您在您的visual studio 中安装了Nuget 包管理器,你可以直接在Nuget中获取到最新版本的Unity。

我们采用的是构造函数注入,运行时注入

【ASP.Net MVC3 】使用Unity 实现依赖注入 这是园内大虾写得这块知识点,大家进去看看

为什么要使用注入

我们反转了对依赖的控制。不是使用new关键字创建一个实例,而是将这种行为委托给了第三方实现(容器)

ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入

安装Nuget Unity包

分别按照在Apps.Web,Apps.BLL,Apps.Core中

ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入

在Apps.Core中添加以下2个类:主要是注入配置使用

ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Apps.BLL;
using Apps.DAL;
using Apps.IBLL;
using Apps.IDAL;
using Microsoft.Practices.Unity;

namespace Apps.Core
{
    public class DependencyRegisterType
    {
        //系统注入
        public static void Container_Sys(ref UnityContainer container)
        {
            container.RegisterType<ISysSampleBLL, SysSampleBLL>();//样例
            container.RegisterType<ISysSampleRepository, SysSampleRepository>();
        }
    }
}
ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入
ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入 UnityDependencyResolver.cs

在系统开始运行时候我们就把构造函数注入。所以我们要在Global文件写入代码

ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入 Global.asax.cs

好了,我们已经把

ISysSampleBLL, SysSampleBLL
ISysSampleRepository, SysSampleRepository

关系注入到系统了

自定义模型

由于EF生成的实体模型是拥有事务状态的,我们需要为SysSample的类再次定义个模型,SysSampleModel,这个模型我们可以加属性,序列化、脱离事物

在Apps.Models新建文件夹Sys,如非特别说明,Sys代表系统,一个Areas区域对应一个文件,区域我们以后会用到

ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入
using System;
using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
namespace Apps.Models.Sys
{
    public class SysSampleModel
    {
        [Display(Name = "ID")]
        public string Id { get; set; }


        [Display(Name = "名称")]
        public string Name { get; set; }

       
        [Display(Name = "年龄")]
        [Range(0,10000)]
        public int? Age { get; set; }

        [Display(Name = "生日")]
        public DateTime? Bir { get; set; }

        [Display(Name = "照片")]
        public string Photo { get; set; }


        [Display(Name = "简介")]
        public string Note { get; set; }

        [Display(Name = "创建时间")]
        public DateTime? CreateTime { get; set; }

    }
}
ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入

接下来我们重新写过IBLL,BLL,controller代码,DAL,IDAL的代码是没问题的,很专注底层

BLL引用Microsoft.Practices.Unity类库

 修改后的代码

ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入 ISysSampleBLL.cs
ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入 SysSampleBLL.cs
ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入 SysSampleController.cs
ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入 View视图

 

因为SysSample在BLL层已经被释放掉了,大家要注意一下所以视图我们要改下

大家把代码下载下来,跟我们第5讲糟糕的代码对比一下。我们的代码优化了,清晰了,构造器能自动释放内存了,无需要实例化了。

当然预览的效果是一样的

ASP.NET MVC5+EF6+EasyUI 后台管理系统(6)-Unity 依赖注入

下一讲,返回json格式与DataGrid结合,实现分页。

 本文转自ymnets博客园博客,原文链接:http://www.cnblogs.com/ymnets/p/3424943.html,如需转载请自行联系原作者

上一篇:Nginx通过https方式反向代理的简单实现


下一篇:“贫困县电商特产”大数据地图:一定有你青睐的特色产品