设为首页 加入收藏

TOP

MVC三层架构搭建(一)
2019-09-17 15:43:19 】 浏览:55
Tags:MVC 架构 搭建

MVC三层架构搭建

项目主要是用三层来搭建项目,三层分为表现层,数据层和业务层。项目用了目前比较流行的IOC架构。目前流行的IoC 框架有AutoFac,Unity,Spring.NET等,项目中选用Spring.NET来搭建三层。

IOC简单介绍

IOC(Inversion of Control),中文译为控制反转,又称为“依赖注入”(DI =Dependence Injection)IOC的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。网上有好多关于IOC介绍的文章,可以在网上查找关于IOC的知识。

三层搭建图

 

开始项目搭建

使用模块表为例,来搭建。表结构如下

解决方案项目设计:

1.新建一个空白解决方案名称为YCUniverse

2.在该解决方案下,新建解决方案文件夹业务层,网站层,数据层,业务层,基础层

3.网站层里面添加ASP.NET Web应用程序,项目选用MVC

4.数据层分为新建YCUniverse.DAL,YCUniverse.IDAL,YCUniverse.DALFactory类库

5.业务层分别新建YCUniverse.BLL,YCUniverse.IBLL类库

6.基础层新建YCUniverse.Model类库和YCUniverse.Ioc类库

建好后结构如下

 

基础层搭建

YCUniverse.Model作为实体类库,将EF模型实体添加到YCUniverse.Model类库

右键单击YCUniverse.Model类库=>添加=>新建项

选择好之后点击添加按钮

点击下一步进入下一步配置 

 

 

点击完成按钮 完成EF的引用 

将YCUniverse.Model类库中的App.Config 中链接数据库字符串复制到WebAppl网站Web.config文件中

数据层配置

YCUniverse.IDAL 类库添加YCUniverse.Model引用

在项目中每一张表都会涉及到查询,新增,删除,编辑,分页等操作,要是每一张表都要新建查询,删除,编辑,分页的方法,这样会增加项目开发时间和产生重复的代码。

解决方法将重复用到的方法封装成一个父类,当子类用到这些方法时可以继承父类。

1.新建父接口的类 名称为IBaseRepository.cs

 

public interface IBaseRepository<T> where T : class, new()
{
/// <summary>
/// 查询
/// </summary>
/// <param name="whereLambda"></param>
/// <returns></returns>
IQueryable<T> LoadEntities(Expression<Func<T, bool>> whereLambda);
/// <summary>
/// 添加
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
T AddEntity(T entity);
/// <summary>
/// 编辑
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
bool EditEntity(T entity);
/// <summary>
/// 删除
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
bool DelEntity(T entity);
/// <summary>
/// 分页
/// </summary>
/// <typeparam name="s"></typeparam>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="totalCount"></param>
/// <param name="whereLambda"></param>
/// <param name="orderByLambda"></param>
/// <param name="IsAsc"></param>
/// <returns></returns>
IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount, Expression<Func<T, bool>> whereLambda, Expression<Func<T, s>> orderByLambda, bool IsAsc);
}
View Code

 

2.新建模块表接口类 名称为ItbMenuRepository.cs继承父类IBaseRepository

public interface ItbMenuRepository : IBaseRepository<tbMenu>
{

}
View Code

 

YCUniverse.IDAL 类库配置完成

YCUniverse.DAL类库开始配置

YCUniverse.DAL类库添加YCUniverse.Model,YCUniverse.IDAL,YCUniverse.Ioc和EF引用

1.新建EF上下类FactoryDBContext.cs

public class FactoryDBContext
{
/// <summary>
/// 保证EF上下文实例是线程内唯一
/// </summary>
/// <returns></returns>
public static DbContext GetDBContext()
{
D
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇(二十)c#Winform自定义控件-有.. 下一篇(二十二)c#Winform自定义控件-..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目