构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(4)-构建项目解决方案 创建EF DataBase Frist模式
原文:构建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模式的更多相关文章
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与目录(持续更新中...)
转自:http://www.cnblogs.com/ymnets/p/3424309.html 曾几何时我想写一个系列的文章,但是由于工作很忙,一直没有时间更新博客.博客园园龄都1年了,却一直都是空空 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请 系列目录 创建新表单之后,我们就可以起草申请了,申请按照严格的表单步骤和分 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充 系列目录 补充一下,有人要表单的代码,这个用代码生成器生成表Flow_Form表 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支 系列目录 步骤设置完毕之后,就要设置好流转了,比如财务申请大于50000元( ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤 系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单 系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计 系列目录 建立好42节的表之后,每个字段英文表示都是有意义的说明.先建立 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(42)-工作流设计01
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(42)-工作流设计01 工作流在实际应用中还是比较广泛,网络中存在很多工作流的图形化插件,可以做到拉拽的工 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-[过滤器+Cache] 系列目录 上次的探讨没有任何结果,我浏览了大量的文章 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(41)-组织架构
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(41)-组织架构 本节开始我们要实现工作流,此工作流可以和之前的所有章节脱离关系,也可以紧密合并. 我们当 ...
随机推荐
- prepare—Article【准备篇】之SSH_tool#PuTTY
第一:下载PuTTY: url : http://www.openssh.com/ 下载界面: 安装后: 详解以上命令 ① ② PuTTYgen is a key generator. It ...
- python调用java
这么个标题多少有点蛋疼的感觉,两个都是互联网时代的语言,学习成本和执行效率也差不多,之所以会产生这种需求,多半是想在python中引用java的类,例如安卓和hadoop的生态圈,基本是java代码的 ...
- 十大响应式Web设计框架
http://www.csdn.net/article/2014-05-13/2819739-responsive-frameworks-for-web-design 对于设计师而言,网站设计中的任意 ...
- PHP-mac下的配置及运行
Here's another option, from the guys from liip, here. This is a PHP package that comes pre-built for ...
- jx3dps开发日记
2014.11.13 子级过滤 关于optgroup这个东西,一开始以为是个包裹元素,但是一般来说,包裹元素给一个class,那么让这个class show()应该它包裹的元素也跟随show,可结果是 ...
- The type java.lang.String cannot be resolved. It is indirectly referenced from required .class files
最近在做J2ME开发项目,配置环境一切OK,但是打开项目时某些文件提示: The type java.lang.String cannot be resolved. It is indirectly ...
- MFC应用程序创建窗口的过程 good
MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该 ...
- bzoj2729
一看就知道是数学题,考虑插空法由于老师只有两人,所以先对老师进行插空这里考虑两种情况:1.两个老师站在同一处,即两个男生之间站了两个老师这时候需要一个女生站在两个老师之间,再对女生插空,根据乘法原理即 ...
- HDU 1150 Machine Schedule
题目大意: 有两台机器A和B以及K个需要运行的任务.A机器有N种不同的模式,B机器有M种不同的模式,而每个任务都恰好在一台机器上运行. 如果它在机器A上运行,则机器A需要设置为模式xi,如果它在机器B ...
- Defining as a "long" or "int" type throws an error on startup
solr启动时候,报如下异常: [java] view plaincopy SEVERE: org.apache.solr.common.SolrException at org.a ...