ioc初步理解(一) 简单实用aotufac搭建mvc三层+ioc(codeFirst) 
                        
                     
                    
                    
                        1】首先搭好框架
 1.1】搭建ui层
  1.2】创建其他内库文件
整个项目基本部分搭建完毕之后如下
2】使用nuget引用文件
先在每一个项目中引入ef
然后再UI层引入以下两个文件autofac和Autofac.Mvc5
 
 
3】因为本demo实用codefirst,所以先去model层完善
  3.1】创建几个model 
   创建一个  User.cs。里面放几个属性 id、name、pwd。
  3.2】创建DBContext.cs这个文件的作用是自动生成数据库 内容如下
 
  3.3】创建DbModelContextFactory.cs。此处作用是:获取当前EF上下文的唯一实例;  内容如下
4】创建DAL层内容【需要使用nuget引入ef文件  和model文件。dal层还需要引入idal】
  4.1】首先完善IDAL(接口)内容
    4.1.1】首先完成基础部分,创建IBaseDAL.cs 在里面添加增删改查这四个基本操作(注意IDAL中全是接口不是类,所以新建的时候注意吧class改成interface)代码如下
 View Code
 
    4.1.2】根据自己在model中创建的模型,在此处也一一对应的创建其dal层接口。所在这里创建一个IUser_DAL.cs  内容如下:
因为所创建的model只有一个user,所以IDAL层到此结束。
  4.2】接下来创建DAL部分内容
   4.2.1】首先创建DbContextFactory.cs  =>   //获取当前EF上下文的唯一实例 代码如下
 View Code
 
    4.2.2】首先创建BaseDAL.cs 在里面写入具体的增删该查操作,代码如下:
 View Code
   4.2.3】创建 User_DAL.cs文件,内容如下
 
5】创建BLL的内容【需要使用nuget引入ef文件   和导入model层。dal层文件,bll层还需要引入ibll层】
  5.1】先创建IBLL(接口)层的内容
    5.1.1】创建IBaseBLL.cs。代码如下
 View Code
   5.1.2】根据model层的模型创建ibll层接口。所在这里创建一个IUser_BLL.cs  内容如下:
 
  5.2】完善BLL层内容
    5.2.1】创建BaseBLL.cs,代码如下
 View Code
   5.2.2】根据model层的模型创建bll层文件。所在这里创建一个User_BLL.cs  代码如下:
 View Code
至此,基础部分建立完毕,接下来建立ui层内容
6】建立UI层内容【需要引入bll文件和dal文件  也就是6.1中图中的两个文件,否则autofac报错,找到不到文件】
  6.1】首先在App_Start文件夹下建AutoFacConfig.cs文件
 
代码:
 View Code
  6.2】然后再Global.asax中进行配置 如下:
  6.3】创建一个公共层,使用nuget引入mvc和ef。添加文件IOCDI.cs 根据创建mode层中模型的数量写入内容:(写公共层主要考虑项目的扩展性,如果本项目中需要些api或者其他ui层时候,避免代码重复)【需要用nuget引入mvc、ef 和ibll层(注意此处mvc版本必须和ui层中mvc版本相同)】
 
7】最后创建一个控制器添加数据看看,
 7.1】先配置Web.config
 
 7.2】创建一个测试控制器(由于是codefirs所以不需要先创建数据库)
最后查看数据库
 
 
【最后附上关于autofac的几点疑惑】
1因为在ui层的App_Start下的AutoFacConfig.cs需要,所以ui层必须引用bll层和dal层,这和三层的理念有些差异。因为三层中ui层并不需要引入dal层。
【结尾说明,关于了解autofac花掉的时间说长也长说短也短。原本以为在博客园、csdn上面找一找就能马上得到一个可以运行的demo,但是很多博主都是按照自己的理解去写,在博文中或多或少会掉一些内容,这些内容对于博主和一些大牛来说是可以忽略不计的,因此博文只需要核心代码就可以,但是对于我这种萌新来说简直是灾难级别的,因为跟着博主敲打代码过程中时长因为缺点什么而无法运行,自己也不知道错误在哪。因此不得不敲到一半立马换下一个。导致效率低下。所以在写这个博文的过程中。我尽量将每一个细节全部罗列出来,以免像我这样的小白看不懂。照着这个流程讲代码敲出来并且运行时没什么大问题的。因为我每敲完一处就写一点。最后将代码运行完毕,才敢上传。如果各位看官觉得有什么问题可以在下方留言】
【如果需要代码可以去此下载,当然懒人也需要一点付出(csdn 3积分)。博主希望大家尽量多动手,多理解。不要像我之前一样只需要demo从不看文章导致后来吃了许多亏】https://www.cnblogs.com/1439107348s/p/9957307.html