前一段时间,写了一步一步asp.net的一系列博客,最近,也快要大四,忙着准备找个工作,这也算是最后一个假期了,这个系列可能不太长, 尽量写完.还是多学习,少扯淡的风格,我们的学习还好继续,现在开始学习asp.net MVC系列,基础知识,大家看博客园相关的一系列就可以了,我们在这里学一下一个权限管理的设计.我采用的是Asp.net MVC+EF+N层的方式,顺便加入点spring.net注入的部分,当然我们最主要的还是关于权限设计的部分.而架构,咱也没学过太复杂的架构,我们 还是从最常用的三层架构进行扩展.
首先,我们要讲解一下关于项目的搭建部分.我们的项目主要分为5部分,业务逻辑层,数据访问层,界面层,领域模型层以及一个公共类的部分.
当然,我们要先建立一个工程,并建立相应的解决方案文件夹,并且保持清晰程度,我们在工程加上前缀(最好是公司前缀)后面加上部分.
然后在每个解决方案文件夹下面建立响应的项目,
这里主要是:
业务逻辑层:
TZHSWEET.IBLL:业务逻辑层接口
TZHSWEET.BLL:业务逻辑层实现
数据访问层:
TZHSWEET.IDao:数据访问层接口
TZHSWEET.Dao:数据访问层实现
领域模型层:
TZHSWEET.Entity:这是EF建立的模型
TZHSWEET.ViewModel:这个是用来传递UI层和业务逻辑层的相关模型对象
界面层:
TZHSWEET.WebUI:主要的MVC和LigerUI实现的界面部分
TZHSWEET.UI:关于MVC公共UI定义的部分
公共类库部分:
TZHSWEET.CacheStorage主要是常用的缓存
TZHSWEET.Common主要是一些公共类实现等等
这里仅仅是三层架构按照我自己的想法做了一个适应性扩展,呵呵.
EF不用说了,这里只是一个简单的应用
在这里我先讲解关于Idao和Dao部分
我们的目标是"0"增删改查的数据访问层实现,
主要是靠EF的定义通用的增删改查,然后其他类继承增删改查接口和相应的自定义子类接口,实现扩展.
首先,我们从以前写代码的经验知道,我们的Dao主要是做增删改查等方面,我们就先定义一个公共的接口,叫做IBaseDao,这个接口定义泛型的增删改查,
1: /* 作者: tianzh
2: * 创建时间: 2012/7/16 11:01:34
3: *
4: */
5: using System;
6: using System.Collections.Generic;
7: using System.Linq;
8: using System.Text;
9: using System.Data.Objects;
10:
11: namespace TZHSWEET.IDao
12: {
13: public interface IBaseDao<T>// where T:class //限制class
14: {
15: #region 查询普通实现方案(基于Lambda表达式的Where查询)
16: /// <summary>
17: /// 获取所有Entity
18: /// </summary>
19: /// <param name="exp">Lambda条件的where</param>
20: /// <returns></returns>
21: IEnumerable<T> GetEntities(Func<T, bool> exp);
22:
23: /// <summary>
24: /// 计算总个数(分页)
25: /// </summary>
26: /// <param name="exp">Lambda条件的where</param>
27: /// <returns></returns>
28: int GetEntitiesCount(Func<T, bool> exp);
29:
30: /// <summary>
31: /// 分页查询(Linq分页方式)
32: /// </summary>
33: /// <param name="pageNumber">当前页</param>
34: /// <param name="pageSize">页码</param>
35: /// <param name="orderName">lambda排序名称</param>
36: /// <param name="sortOrder">排序(升序or降序)</param>
37: /// <param name="exp">lambda查询条件where</param>
38: /// <returns></returns>
39: IEnumerable<T> GetEntitiesForPaging(int pageNumber, int pageSize, Func<T, string> orderName, string sortOrder, Func<T, bool> exp);
40:
41: /// <summary>
42: /// 根据条件查找
43: /// </summary>
44: /// <param name="exp">lambda查询条件where</param>
45: /// <returns></returns>
发表回复