关于简单的三层的简化(bll,dal,model)的封装这里全部都在一个文件主要在于明白意思
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 封装泛型CRUD
{
    public class TeacherInfoDAL<T> : BaseDAL<T> where T : new()
    {
        public override T Add(T obj)
        {
            Console.WriteLine("TeacherInfoDAL添加了一个对象");
           return base.Add(obj);
}
public override int Del(T obj)
        {
            Console.WriteLine("TeacherInfoDAL删除了一个对象");
            return base.Del(obj);
}
public override T Update(T obj)
        {
            Console.WriteLine("TeacherInfoDAL更新了一个对象");
            return base.Update(obj);
        }
public override IList<T> QueryList(Func<T, bool> whereLambada)
        {
            Console.WriteLine("TeacherInfoDAL查询了系列个对象");
            return base.QueryList(whereLambada);
        }
    }
    public class UserInfoDAL<T> : BaseDAL<T> where T : new()
    {
        public override  T Add(T obj)
        {
            Console.WriteLine("UserInfoDAL添加了一个对象");
            base.Add(obj);
            return obj;
}
public override int Del(T obj)
        {
            Console.WriteLine("UserInfoDAL删除了一个对象");
           return  base.Del(obj);
          
        }
public override T Update(T obj)
        {
            Console.WriteLine("UserInfoDAL更新了一个对象");
            return base.Update(obj);
        }
public override IList<T> QueryList(Func<T, bool> whereLambada)
        {
            Console.WriteLine("UserInfoDAL查询了系列个对象");
          return  base.QueryList(whereLambada);
        }
    }
public class BaseDAL<T> where T : new()
    {
        public virtual T Add(T obj)
        {
           
            return obj;
        }
public virtual int Del(T obj)
        {
          
            return 0;
        }
public virtual T Update(T obj)
        {
           
            return new T();
        }
public virtual IList<T> QueryList(Func<T,bool> whereLambada )
        {
IList<T> list = new List<T>();
            foreach (var r in list)
            {
                if (whereLambada(r))
                {
                    list.Add(r);
                }
            }
            return list;
        }
}
public abstract class BaseBLL<T> where T : new()
    {
        public BaseDAL<T> basedal;
public virtual T Add(T obj)
        {
            Console.WriteLine("基本业务处理add");
            return new T();
        }
public virtual int Del(T obj)
        {
            Console.WriteLine("基本业务处理del");
            return 0;
        }
public virtual T Update(T obj)
        {
            Console.WriteLine("基本业务处理update");
           return new T();
        }
public virtual IList<T> QueryList(Func<T, bool> whereLambada)
        {
            Console.WriteLine("基本业务处理QueryList");
           return new List<T>();
        }
public abstract void setDAL( );
}
public class UserInfoBLL<T>:BaseBLL<T> where T : new()
    {
        public UserInfoBLL()
        {
            setDAL();
        }
public override T Add(T obj)
        {
            base.Add(obj);
            Console.WriteLine("UserInfoBLL务处理add");
            return basedal.Add(obj);
        }
public override int Del(T obj)
        {
            base.Del(obj);
            Console.WriteLine("UserInfoBLL务处理del");
          
            return basedal.Del(obj);
        }
public override T Update(T obj)
        {
            base.Update(obj);
            Console.WriteLine("UserInfoBLL务处理update");
            return basedal.Update(obj);
        }
public override IList<T> QueryList(Func<T, bool> whereLambada)
        {
            base.QueryList(whereLambada);
            Console.WriteLine("UserInfoBLL务处理querylist");
            return basedal.QueryList(whereLambada);
        }
public override void setDAL()
        {
            basedal=new UserInfoDAL<T>();
        }
    }
public class TeacheInfoBLL<T> : BaseBLL<T> where T : new()
    {
        public TeacheInfoBLL()
        {
            setDAL();
        }
public override void setDAL()
        {
            basedal=new TeacherInfoDAL<T>();
           
        }
        public override T Add(T obj)
        {
            base.Add(obj);
            Console.WriteLine("TeacheInfoBLL务处理add");
            return basedal.Add(obj);
        }
public override int Del(T obj)
        {
            base.Del(obj);
            Console.WriteLine("TeacheInfoBLL务处理del");
return basedal.Del(obj);
        }
public override T Update(T obj)
        {
            base.Update(obj);
            Console.WriteLine("TeacheInfoBLL务处理update");
            return basedal.Update(obj);
        }
public override IList<T> QueryList(Func<T, bool> whereLambada)
        {
            base.QueryList(whereLambada);
            Console.WriteLine("TeacheInfoBLL务处理querylist");
            return basedal.QueryList(whereLambada);
        }
}
class Program
    {
        static void Main(string[] args)
        {
            BaseBLL<Student> bll=new TeacheInfoBLL<Student>();
            Student student=new Student();
            student.StudentNo = 1;
            bll.Add(new Student());
            bll.Del(new Student());
            bll.Update(new Student());
            bll.QueryList(a => a.StudentNo != 0);
            Console.WriteLine("------------------------");
            BaseBLL<Teacher> bll2 = new UserInfoBLL<Teacher>();
            Teacher t = new Teacher();
            t.TeacherNO = 1;
            bll2.Add(t);
            bll2.Del(t);
            bll2.Update(t);
            bll2.QueryList(a => a.TeacherNO != 0);
            Console.ReadKey();
        }
    }
public class Student
    {
        public int StudentNo { get; set; }
        public string Name { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
        public string Address { get; set; }
        public string Class { get; set; }
        public string DeptNO { get; set; }
    }
public class Teacher
    {
        public int TeacherNO { get; set; }
        public string Name { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
        public string DeptNo { get; set; }
    }
}
关于简单的三层的简化(bll,dal,model)的封装这里全部都在一个文件主要在于明白意思的更多相关文章
- Web三层-UI/BLL/DAL/MODEL
		2013传智播客视频\视频\2013-05-28-EF\视频 创建4个程序集,添加引用,model添加映射, P01UI表现层--BLL+MODELP02BLL业务层--DAL+MODELP03DAL ... 
- NHibernate框架与BLL+DAL+Model+Controller+UI  多层架构十分相似--『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)
		原文://http://blog.csdn.net/wb09100310/article/details/47271555 1. 概述 搭建了Spring.NET+NHibernate的一个数据查询系 ... 
- 【转】asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别
		原文地址:http://blog.csdn.net/luoyeyu1989/article/details/8275866 首先,MVC和三层架构,是不一样的. 三层架构中,DAL(数据访问层).BL ... 
- asp.net mvc(模式)和三层架构(BLL、DAL、Model)的联系与区别 转载自:http://blog.csdn.net/luoyeyu1989/article/details/8275866
		首先,MVC和三层架构,是不一样的. 三层架构中,DAL(数据访问层).BLL(业务逻辑层).WEB层各司其职,意在职责分离. MVC是 Model-View-Controller,严格说这三个加起来 ... 
- 简单的三层asp.net webForm使用Ninject实现Ioc
		简单的三层asp.net webForm使用Ninject实现Ioc 在asp.net webform下使用Ninject的简单过程. 首先建立个项目,如下图,简单三层(PS:UI层要同时引用BLL. ... 
- MVC中Model BLL层Model模型互转
		MVC中Model BLL层Model模型互转 一. 模型通常可以做2种:充血模型和失血模型,一般做法是模型就是模型,不具备方法来操作,只具有属性,这种叫做失血模型(可能不准确):具备对模型一定的简单 ... 
- 简单解读linux的/proc下的statm、maps、memmap 内存信息文件分析【转】
		转自:https://blog.csdn.net/sctq8888/article/details/7398776 转载自:http://hi.baidu.com/deep_pro/blog/item ... 
- 三层架构中bll层把datatable转换为实体model的理解
		看了很多人的项目,很多都是用到三层架构,其中BLL层中有一种将DataTable转换为实体的方法.一直没有明白为啥要这样做,今天特意去搜索了一下,如果没有答案我是准备提问,寻求解答了.还好找到一个相关 ... 
- C#里面BLL、Model、DAL、UI层
		C# 三层架构分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL)再加上实体类库(Model) 1.实体类库(Model),主要存放数据库中的表字段. 操作: (1)先建立实体类库Mode ... 
随机推荐
- LG5024 保卫王国
			题意 题目描述 Z 国有\(n\)座城市,\(n - 1\)条双向道路,每条双向道路连接两座城市,且任意两座城市 都能通过若干条道路相互到达. Z 国的国防部长小 Z 要在城市中驻扎军队.驻扎军队需要 ... 
- Mac OS Alfred 2 tips
			From: http://www.uuair.cn/?p=64 写这个东西,我没敢叫指南之类,只能算是技巧,因为Alfred这个软件的强大,我还没研究明白,还有好多功能自己没搞懂,所以写一些我发现或者 ... 
- UVA之1121 - Subsequence
			版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/SunnyYoona/article/details/25840365 [题目] A sequence ... 
- const_cast
			函数原型: const_cast < type-id > ( expression ) 去掉const属性:const_cast<int*> (&num),常用,因为不 ... 
- 为什么 Windows 10 无论怎么设置一分钟后就自动关屏幕?
			为什么 Windows 10 无论怎么设置一分钟后就自动关屏幕? 在设置中设置了很多方法,但不管怎么设置就是不行,不到一分钟一定关屏幕. 开始以为是能源之星引起,查了相关资料说不是,那个能源之星标志只 ... 
- FastAdmin 升级后出现 is already in use
			FastAdmin 升级后出现 is already in use 升级 FastAdmin 改进很多,但全新安装出现以下错误 Cannot use app\common\library\Menu a ... 
- [转]基于Oracle的EntityFramework的WEBAPI2的实现(一)——准备工作
			基于Oracle的EntityFramework的WEBAPI2的实现(一)——准备工作 转载请注明作者及来源:张峻崎,博客园 目前在.net的范围内,好的而且方便的ORM的真的不是很多,与VS集成 ... 
- Java renameTo()重新命名此抽象路径名表示的文件
			Java手册 renameTo public boolean renameTo(File dest) 重新命名此抽象路径名表示的文件. 此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从 ... 
- Bootstrap-CL:略缩图
			ylbtech-Bootstrap-CL:略缩图 1.返回顶部 1. Bootstrap 缩略图 本章将讲解 Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstr ... 
- [转]Docker 为什么这么火
			本文来自:Docker为什么这么火 以及此文:http://cloud.51cto.com/art/201408/447966_1.htm Docker 我的理解是,相对于 VMware 的一个分支. ... 
