原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(4)-构建项目解决方案 创建EF DataBase Frist模式

进行本次文章之前,我们可能需要补充一些基本知识。

首先我们系统是基于接口编程的,我们为什么要使用借口编程,其实这是应用了一种企业应用架构模式

Repository(仓储)

  一种用来封装存储,读取和查找行为的机制,它模拟了一个对象集合。

  支持在领域和数据映射层之间实现彻底分离和单向依赖关系的目标。

接口编程

  最主要的目的是使关注点分离,让开发人员各司其职

  代码封存保密,分包开发,无需要给予逻辑结构代码,只需要给予接口文件

  缺点:设计困难,比传统的三层,单类模式困难,但是接口程序员工资都很高!

AOP(面向方面编程)

  我们为了弥补面向对象缺陷,我们系统将引入面向方面编程

  主要用于日志记录,事务处理,异常处理等等。

概念这种东西过于模糊,我们必须经历过一个大系统才能认识这些概念模型。我无法用文章来下详细解析此系统的深层概念,需要大家在日常工作中实践和意会,推荐一本.net的设计书籍《Microsoft .NET企业级应用架构设计》这本书详细的讲述了接口编程,面向方面编程

通过上面我们需要构建项目的解决方案。

虽然MVC的controller层包含了逻辑,但是对于一个大系统,我们不可能把业务和数据库底层包含在一起,虽然提供了Models模型文件夹,在第二讲我把他删除了,我们将这一层Model层提取出来,任何层的设计都好,都是从三层设计模式衍生出来的,本系统也不例外。我们是基于接口编程的仓储模式,所以我们必须有BLL,IBLL,DAL,IDAL的对应类库。

好,现在我们右键我们的解决方案吧。分别建立

  • App.BLL (业务层)
  • App.IBLL (业务层接口)
  • App.DAL (数据层)
  • App.IDAL (数据层接口)
  • App.Models (模型)
  • App.Common(通用类库)
  • App.Core (核心类库)

图:

添加:EF5.0 VS2012旗舰版默认已经集成安装了EF5.0我们把他存放到App.Models类库下

右键----添加新建项

输入名称DB大家自己取名称,这里选择空模型,我们是模型优先模式,不是code frist模式要注意。对于系统来说我认为模型优先是有优势的

展开DB.edmx删除DB.Context.tt和DB.tt才能正确使用Model Frist模式,看到DB.edmx的属性窗口,将代码生成策略一项的无改为默认值

我们打开SQL Server如果你安装了VS2012我相信你的数据库也不老,我是SQL Server2008 R2版本

我们建立一个简单的事例表吧:

Create database DB 创建一个名称为DB的数据库

use DB

CREATE TABLE [dbo].[SysSample](
[Id] [varchar](50) NOT NULL,
[Name] [varchar](50) NULL,
[Age] [int] NULL,
[Bir] [datetime] NULL,
[Photo] [varchar](50) NULL,
[Note] [text] NULL,
[CreateTime] [datetime] NULL,
CONSTRAINT [PK__SysSampl__3214EC075AEE82B9] PRIMARY KEY CLUSTERED

好了有了数据库和表,我们往数据库添加模型映射,说到这里我简单说说我们用EF的原理,EF是一个ORM框架,ORM是通过描述对象和关系数据库之间的映射,将程序中的对象自动持久化到关系数据库中,简单易用、性能突出的泛型持久化支持,则将使您能够将更多注意力集中到业务开发,所以大家懂要懂得什么是事务,加入我们从数据库取出10条数据,我删除了1条,过一会在删除1条,只要我提交事务才到数据库执行删除,否则将是删除内存的数据库,所以数据库的压力小了,内存的压力大了。

新建连接-----选择Microsoft Sql server

相信你此时已经看到了效果了,我可能写得太详细了,文章有点乱。

如果你用过熟悉三层架构,那现在可以动手对项目之间的关系进行引用了。

下面给出一个引用流程:按照这个来进行引用,有了更清楚的让大家看出注入,我们目前这样引用

App.Admin-------------App.Models,App.Common,App.Core,App.IBLL,App.BLL,App.DAL,App.IDAL,System.Data.Entity

App.BLL-----------App.Models,App.IBLL,App.DAL,App.IDAL,System.Data.Entity

App.BLL--------------App.IBLL,System.Data.Entity

App.DAL--------------App.IDAL,System.Data.Entity

App.IDAL--------------System.Data.Entity

下一讲我们将利用接口编程我们实现一个增删改代码,一些糟糕的代码

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(4)-构建项目解决方案 创建EF DataBase Frist模式的更多相关文章

  1. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与目录(持续更新中...)

    转自:http://www.cnblogs.com/ymnets/p/3424309.html 曾几何时我想写一个系列的文章,但是由于工作很忙,一直没有时间更新博客.博客园园龄都1年了,却一直都是空空 ...

  2. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请 系列目录 创建新表单之后,我们就可以起草申请了,申请按照严格的表单步骤和分 ...

  3. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充 系列目录 补充一下,有人要表单的代码,这个用代码生成器生成表Flow_Form表 ...

  4. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支 系列目录 步骤设置完毕之后,就要设置好流转了,比如财务申请大于50000元( ...

  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤 系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行 ...

  6. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单 系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四 ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计 系列目录 建立好42节的表之后,每个字段英文表示都是有意义的说明.先建立 ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(42)-工作流设计01

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(42)-工作流设计01 工作流在实际应用中还是比较广泛,网络中存在很多工作流的图形化插件,可以做到拉拽的工 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-[过滤器+Cache] 系列目录 上次的探讨没有任何结果,我浏览了大量的文章 ...

  10. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(41)-组织架构

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(41)-组织架构 本节开始我们要实现工作流,此工作流可以和之前的所有章节脱离关系,也可以紧密合并. 我们当 ...

随机推荐

  1. iphone5手机端内容超出iphone6没问题且超出内容为http://.....网址

  2. thinkphp中表有前缀名的时候申明模板的方法

    $Model=new \Home\Model\Stu_activityModel; $Model=D('Stu_activity');//错误的声明不了

  3. 弹出对话框 UIAlertController

    双选 //实例化UIAlertController var av=UIAlertController(title: "

  4. sass用法

    可能刚开始我们学习前端的时候都习惯用html+css.来做网页,但是我们发现css有很多重复的代码或者是你要改里面的图片或者文字还有去诶个的找很麻烦,所以我们就用sass来简化它. 首先我们需要安装一 ...

  5. 更改input【type=file】样式

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. Chaperon简介

    Chaperon是一个可以把有结构的Text转换成XML.它包括一个强大的LALR(1)解析器来解析Text和一个可以用来创建XML文档的Tree builder. http://chaperon.s ...

  7. 什么是image crop?

    一直对image crop很困惑,总算是看到了一篇描述较为简洁的说明:图像crop就是指从图像中移除不需要的信息,只保留需要的部分

  8. python ^M 产生的原因 及 lxml 如何获取text的原因

    其实跟踪一下会发现,^M 是由于 /r/n 所造成的. article = dom_c.xpath('//td[@id="article_content"]//text()')co ...

  9. C连接MySQL数据库开发之Xcode环境配置及测试

    一.开发环境 Mac OS X 10.9.2 64位.Xcode5.1.MySQL5.5.37 64位 MySQL安装目录为:/usr/local/mysql 二.配置xcode连接mysql的编译选 ...

  10. [BZOJ 3680] 吊打XXX 【模拟退火】

    题目链接:BZOJ - 3680 题目分析 这道题是SLYZ的神犇把JSOI的平衡点那道题改了一下题面变成了吊打GTY神犇..Orz 第一次写模拟退火,只能照着别人的代码写,我看的是PoPoQQQ神犇 ...