接下来,我们就要到业务逻辑层了,简单的说,业务逻辑层就是调用Repository(可以看做是DAL数据库访问层)

先来看看项目的架构

我们现在就开始来做BLL层.  同样,先编写  UserInfoService ,这个就是调用 UserInfoRepository

先添加对项目的引用,Model层,IRepository(数据库访问层的接口),Repository(数据库访问层),由于我们的Model是使用EF的,那么还需要引用System.Data.Entity

我们先来编写 UserInfoService.cs  直接调用 DbSession下的UserInfoRepository仓储就可以了

namespace YouJiao.MvcWeb.BLL
{
public class UserInfoService
{
public IDbSession DbSession
{
get { return new DbSession();}
} public IList<UserInfo> LoadEneities(Func<UserInfo, bool> whereLambda)
{
return DbSession.UserInfoRepository.LoadEneities(whereLambda);
}
}
}

这里只是写了一个,我们可以发现  既然 UserInfoService要写这么多,那么在ProductService里面也要写这么多,于是我们也抽象出一个 BaseService出来

namespace YouJiao.MvcWeb.BLL
{
public abstract class BaseService<T> where T : class ,new()
{
public IDbSession DbSession
{
get
{
return new DbSession();// 暂时先这么写,一会再处理这里的实例管理
}
} public BaseService()
{
SetCurrentRepository();
} public IBaseRepository<T> CurrentRepository { get; set; } public abstract void SetCurrentRepository();//抽象方法,作用是设置当前仓储 public IList<T> LoadEneities(Func<T, bool> whereLambda)
{
//return DbSession.UserInfoRepository.LoadEneities(whereLambda); //这里要怎么写?
return CurrentRepository.LoadEneities(whereLambda); //我们设置一个当前仓储的属性为 CurrentRepository
}
}
}

然后是 UserInfoService 继承自 BaseService

namespace YouJiao.MvcWeb.BLL
{
public class UserInfoService : BaseService<UserInfo>
{
public override void SetCurrentRepository()
{
this.CurrentRepository = this.DbSession.UserInfoRepository; // 这里的this是表示,这个是从基类里面集成来的
}
}
}

接着我们对DbSession进行一个实例的管理   DbSessionFactory

MVC+Ef项目(4) 抽象业务逻辑层BLL层的更多相关文章

  1. MVC+Ef项目(3) 抽象数据库访问层的统一入口;EF上下文线程内唯一

    抽象一个数据库访问层的统一入口(类似于EF的上下文,拿到上下文,就可以拿到所有的表).实际这个入口就是一个类,类里面有所有的仓储对应的属性.这样,只要拿到这个类的实例,就可以点出所有的仓储,我们在 R ...

  2. MVC+Ef项目(2) 如何更改项目的生成顺序;数据库访问层Repository仓储层的实现

    我们现在先来看看数据库的生成顺序   居然是 Idal层排在第一,而 web层在第二,model层反而在第三 了   我们需要把 coomon 公用层放在第一,Model层放在第二,接下来是 Idal ...

  3. Layui+MVC+EF (项目从新创建开始)

    最近学习Layui ,就准备通过Layui来实现之前练习的项目, 先创建一个新的Web 空项目,选MVC 新建项目 创建各种类库,模块之间添加引用,并安装必要Nuget包(EF包)   模块名称 模块 ...

  4. MVC+Ef项目(1) 项目的框架搭建

    一:首先我们来搭建最基本的项目框架,这里使用MVC3作为web项目,然后我们添加几个类库项目 最后的项目如下, 其中有一个 YouJiao.MvcWeb.Repository 实际就当做是 DAL层即 ...

  5. Java Swing项目专栏之项目业务流程与业务逻辑

    Java Swing项目专栏 项目前言 这个超市管理项目是从八月初开始的,原以为像我这样的小菜比是完全掌控不了这样的项目的.原因是因为大一大二还是没怎么好好学自己的专业课,这次项目做完,我给自己建立了 ...

  6. Jexus 安装asp.net mvc EF 项目引发的错误总

    1.Linux 中的文件路径问题(配置文件路径),必须使用左斜杆 “/” 2.MVC 看 View/Web.config 下的配置文件中版本不对报错,如下: Could not locate Razo ...

  7. DRF项目之通过业务逻辑选择数据集和序列化器

    在REST后台开发中,我们需要通过业务逻辑来选择数据集或者序列化器. 选择数据集: # 重写get_queryset实现通过业务逻辑选择指定数据集 def get_queryset(self): '' ...

  8. asp.net mvc 简单项目框架的搭建过程(一)对Bll层和Dal层进行充分解耦

    学习asp.net 已经有近三个月的时间了,在asp.net mvc上花的时间最多,但个人真是有些菜,不得不说,asp.net mvc的水真的还是蛮深的.目前在公司实习,也见过公司几个项目的代码了.对 ...

  9. 【MVC 1】MVC+EF实体框架—原理解析

    导读:在之前,我们学过了三层框架,即:UI.BLL.DAL.我们将页面显示.逻辑处理和数据访问进行分层,避免了一层.两层的混乱.而后,我们又在经典三层的基础上,应用设计模式:外观.抽象工厂+反射,使得 ...

随机推荐

  1. Sqli-labs less 37

    Less-37 本关与34关是大致相似的,区别在于处理post内容用的是mysql_real_escape_string()函数,而不是addslashes()函数,但是原理是一直的,上面我们已经分析 ...

  2. Sublime Text3激活 破解

    Sublime Text 是一个复杂的文本.代码编辑器.出色用户界面,非凡的功能和惊人的性能. Sublime Text 3 官方网站 http://www.sublimetext.com/ 点击菜单 ...

  3. 线性时间常数空间找到数组中数目超过n/5的所有元素

    问题描述: Design an algorithm that, given a list of n elements in an array, finds all the elements that ...

  4. Quant面试准备5本书

    Heard on The Street: Quantitative Questions from Wall Street Job Interviews - Timothy Falcon Crack F ...

  5. ExtJs之文本框及数字输入

    结合HTML来理解, 比较容易. <!DOCTYPE html> <html> <head> <title>ExtJs</title> &l ...

  6. 消除ComponentOne(C1StudioNet_2013v2) 的注册提示

     以后大家如果遇到还有提示,在License文件里添加:C1.Win.C1Command.C1OutBar, C1.Win.C1Command.4, Version=4.0.20132.19568,  ...

  7. facebook design question 总结

    http://blog.csdn.net/sigh1988/article/details/9790337 这里原帖地址: http://www.mitbbs.com/article_t/JobHun ...

  8. <Win32_1>深入浅出windows消息机制[转自crocodile_]

    上学期学习了Java ,感觉Java写一个窗口真心简单,很易上手,也就难怪很多开发人员选择Java作为自己的开发编程语言.但是由于自身对windows的热爱,让我觉得c.c++语言才是我亲睐的编程语言 ...

  9. Linux网络编程7——使用TCP实现双方聊天

    思路 主线程负责发送消息,另一线程负责接收消息.服务端和客户端均是如此. 注意 当A方close掉用于通信的socket端口后,该端口是不会立即关闭的.因为此时可能B方的信息还没send完.因此,此时 ...

  10. poj 3328(多起点多终点的最短路)

    题目链接:http://poj.org/problem?id=3328 思路:这道题花了我将近3个小时,结果发现是方向搞错了,orz,过了样例之后提交wa,然后换成优先队列就过了.其实题目意思很简单, ...