EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(一)

前言

  • 本系列源自对EF6 CodeFirst的探索,但后来发现在自己项目中构建的时候遇到了一些问题以及一些解决方法,因此想作为一个系列写下来。
  • 本系列并不是教你怎么做架构设计,但可以参照一下里面的方法,EF系列大都采用DDD的构建方式,这也是目前最流行的。如果你想对DDD有所了解,可以在园子当中寻找那些DDD方面的文章或者是在CodePlex上下载相关的DDD设计模型源码进行研究。
  • 如果你是一个新人或者是没有用过EF6 CodeFirst的人,那么本系列将带你一步一步构建自己的解决方案平台。如果你是对EF有研究的人,那么不正之处,欢迎指教。

系统场景

  当我们对系统进行设计的时候,往往会考虑到它的权限设计,本系列就针对一个简单的权限场景来对总个系统进行设计和技术要点的实现。

  • 需求列表

1.  系统具备管理员和操作员的角色;

2.  一个系统用户只能属于某个角色;

3.  一个角色用户可以操作多个业务模块,一个业务模块可以被多个角色用户操作;

4.  业务模块和角色用户之间可以进行配置;

5.  系统日志维护

6.  系统字典维护

  • UML用例图

  

  • PD数据库设计

  

  • EF实体对象模型

  

  • 系统框架搭建

  

  1. Common 系统通用类库层:主要存放一些系统的需要的通用访问的帮助类问价,比如本示例采用的主键编码为长整形的编码规则类、用户密码加密和解密的帮助类等;
  2. Abstract领域抽象层:也就是我们常说的接口层,主要是定义业务实现方法的接口;
  3. Concrete领域实现层:对领域业务的实现类以及领域模型的构建;
  4. Entities实体层:存放领域模型的实体;
  5. Mapper实体映射层:EF对实体的关系配置后的映射,本示例采用的是EF Fluent API的方式来对实体在数据库中的映射做详细配置;
  6. Initializer初始化数据层:由于数据库是通过微软的ORM框架Entity Framework映射生成的,所以在数据库初始化时,我们可以添加我们所需要的初始化数据;
  7. Factory 工厂反射层:主要用于服务层调用领域实现层的解耦操作;
  8. Service服务层:注意这里只是一个示例,具体可以使用WCF、Web Api、WebService来作为服务层,本示例就用WebService来做一下说明;
  9. Web展现层:主要是利用Asp.net mvc4+EasyUI来作为前端页面的效果展示和操作。

  注意:解决方案文件夹在本地磁盘不会自动生成,这里我们手动建立一下,然后把各自的工程建立在对应的文件夹里面。

  

  • 示例环境
  1. 系统:Windows 7 X64 旗舰版
  2. 开发工具:Visual studio 2013 旗舰版
  3. 数据库:Sql Server 2008 r2
  4. ORM框架:Entity Framework 6以上版本
  5. IOC容器:Ninject 3.2.0.0
  6. 展现层:Asp.net MVC4 +EasyUI 1.4.3
  7. 代码管理:Visual Studio Online(TFVC)

  注意:这是我本机的版本,大家的开发环境可能有所不同。Visual studio只要能支持Visual Studio Online(TFVC)的就行,

  后面会讲到如何使用。数据库可以是2005 2008 2012 版本的应该都可以支持映射。EasyUI可以是1.3.5以上的版本。Asp.net

  MVC采用的是4的版本,Ninject就用它里面自带的版本呢。

系统目标

  • 采用EF6完成业务实体到数据库表的完整映射
  • 利用Ninject和工厂反射模式完成对接口和实现类的解耦,减少依赖
  • 实现各模块的基本操作和页面设计
  • 实现不同角色用户登录系统后可以对不同的页面模块进行操作

备注

  • 由于代码需要架设到云端,所以大家必须注册一个微软的账号来登录Visual Studio Online管理我们的代码,虽然示例演示的时候只有一个人,但是Visual Studio Online可以免费提供5个账号的团队使用权。
  • 本来想着简单点的,但真正说起来的时候发现东西还是挺多的。后面就会按照这个完整的示例来一一讲解,等完成后会提供代码的下载。但是不知道会有多少篇幅,为了让大家有点耐心,我还是先截取几个成果图吧,希望大家多多支持和指教。

  

  

  

时间: 2024-10-12 19:54:31

EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(一)的相关文章

EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(六)

前言 在接下来的篇幅里将对系统的模块功能进行编写.主要以代码实现为主.这一篇我们需要完成系统模块“角色管理”的相关功能.完成后可以对系统框架结构有进一步了解. Abstract层 之前说过,Abstract层是对业务接口的定义,所以我们新建接口文件IS_UserRepository,定义增删改查业务的接口.这一层需要添加对Entities层的引用.代码如下: using Entities; using System.Collections.Generic; namespace Abstract

EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(四)

前言 这一篇,我们终于到了讲解Entity Framework CodeFirst 的时刻了,首先创建实体对象模型,然后会通过配置Fluent API的方式来对实体对象模型进行完整的数据库映射操作. 此篇幅中会涉及到一些Entity Frame的相关概念,会给出初步的解释.如果需要详细了解,可以查阅相关的帮助文档. EF实体对象模型的创建 EF的实体对象模型大都采用POCO类的方式创建.POCO的全称为Plain_Old_CLR_Object(简单传统CLR对象),是指那些没有从任何类继承,也没

EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(三)

前言 在上一篇中,我们依靠着EasyUI强大的前端布局特性把前端登录界面和主界面给搭建完成了.这一篇我们就要尝试着把整个解决方案部署到云端呢,也就是Visual Studio Online(TFVC)中. 在我们进行团队项目开发的过程中,或多或少的都会接触到一些源代码管理工具,比如vss.svn.tfs.git,这些工具都有着自己的特点.但最终目的都是方便团队的协作开发,提高工作效率.Visual studio从2013版本开始就为我们提供了云端管理源代码的能力.Visual Studio On

EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(完)

前言 这一篇是本系列的最后一篇,虽然示例讲到这里就停止呢,但对于这些技术的学习远不能停止.虽然本示例讲的比较基础,但是正如我第一篇说到的,这个系列的目的不是说一些高端的架构设计,而是作为一个入门级,对学习EntityFramework6构建一个简单的示例以及对其进行设计,管理,编码的过程. 应部分园友要求,博客换了一个清爽的模板.之前的模板也是为了学习一下,所以按照其他模板的样式,把自己的博客园模板修该了一下.虽然这不是写博客的主要目的,但还是从中学习到了很多,比如小插件的应用.运行js和css

EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(七)

前言 上一篇文章我们完成了系统角色管理的基本功能实现,也对系统层次结构进行了了解.这一篇我们将继续对系统的用户管理模块进行代码编写.代码没有做封装,所以大部分的逻辑代码都是相通的,只是在一些前端的细节上处理有些不同.源码将在文章的末尾给出,有兴趣的园友可以对代码做一些封装或重构,毕竟这可以减少很多的代码量. Abstract层 在这一层添加对用户管理操作的业务接口IS_UserRepository,里面定义增删改查的业务接口.代码如下: using Entities; using System.

EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(二)

前言 今天早上,看到第一篇上首页呢,多谢支持! 写完第一篇后,我一直在想接下来应该从哪一方面开始讲.后来我觉得不用那么死板的把每一个课程和大纲都列出来吧,毕竟我又不是教书的,呵呵...我觉得就像做实验一样,我们一部分一部分的完成,最后总个结果应该就出来呢.那么这一篇就来把前端的样子弄出来,至少得知道长成什么样吧.接下来就应该开始捯饬了... 下载前端框架EasyUI 到EasyUI的官网下载压缩包.一个是基于GPL的开源版,一个是商业版.我们自己做研究就下个开源版呢.目前是1.4.3的版本,解压

EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(八)

前言 本篇幅将对系统的菜单管理模块进行说明,系统的菜单采用树形结构,这样可以更好地方便层级设计和查看.本示例将说明如何通过EntityFramework读取递归的菜单树形结构,以及结合EasyUI的treegrid在Asp.net MVC上显示树形菜单和管理操作. Easyui-treegrid的使用方法 首先我们来看一下treegrid的基本使用方法.很简单,和easyui-datagrid差不多. <table title="Folder Browser" class=&qu

EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(九)

前言 这一篇我们将完成系统的权限设置功能以及不同角色用户登录系统后动态加载菜单.注意:此示例权限只针对菜单级,如果园友需要更复杂的系统权限设置,可以拓展到按钮级或属性级. 用户的登录采用Form认证来实现,这样可以有效地防止非授权用户或页面链接对系统造成不安全的操作. 权限设置模块 页面采用角色列表和菜单列表勾选的方式,即选择角色后勾选可以操作的菜单,这样具有才角色的用户就具有操作这些菜单的权限.界面设置如下: 界面选择的roleID和menuID我们采用字符串的方式进行拼接.在controll

基于MVC4+EasyUI的Web开发框架形成之旅--MVC控制器的设计

自从上篇<基于MVC4+EasyUI的Web开发框架形成之旅--总体介绍>总体性的概括,得到很多同行的关注和支持,不过上一篇主要是介绍一个总体的界面效果和思路,本系列的文章将逐步介绍其中的细节,本文主要介绍整个Web开发框架中的MVC控制器的设计.在设计之初,我就希望尽可能的减少代码,提高编程模型的统一性.因此希望能够以基类继承的方式,和我Winform开发框架一样,尽可能通过基类,而不是子类的重复代码来实现各种通用的操作. 1.登录控制的控制器基类设计 我们知道,一般我们创建一个MVC的控制