EF---结合三层方法的应用
1 public class CustomerDAL
2 {
3 //数据库上下文对象
4 YYMMVCEntities db = new YYMMVCEntities();
5 /// <summary>
6 /// 新增操作
7 /// </summary>
8 public int Add(Customer customer)
9 {
10 db.Customers.AddObject(customer);
11 //保存成功后会将自增的ID设置成customer的主键属性
12 return db.SaveChanges();
13 }
14 //删除
15 public int DeleteBy(int cid)
16 {
17 Customer customer=new Customer(){CID = cid};
18 db.Customers.Attach(customer);
19 db.Customers.DeleteObject(customer);
20 return db.SaveChanges();
21 }
22 //根据条件删除
23 public int DeleteExpression(System.Linq.Expressions.Expression<Func<Customer,bool>> deleWhere)
24 {
25 List<Customer> customers=db.Customers.Where(deleWhere).ToList();
26 customers.ForEach(m=>db.Customers.DeleteObject(m));
27 return db.SaveChanges();
28 }
29
30 //修改方法
31 public int Modify(Customer customer)
32 {
33 db.Attach(customer);
34 db.ObjectStateManager.ChangeObjectState(customer, EntityState.Modified);
35 return db.SaveChanges();
36 }
37 //查询
38 publicList<Customer> GetListBy(System.Linq.Expressions.Expression<Func<Customer,bool>> seleWhere)
39 {
40 return db.Customers.Where(seleWhere).ToList();
41 }
42 //查询和排序
43 public List<Customer> GetListBy<Tkey>(System.Linq.Expressions.Expression<Func<Customer,bool>> seleWhere,System.Linq.Expressions.Expression<Func<Customer,Tkey>> orderWhere)
44 {
45 return db.Customers.Where(seleWhere).OrderBy(orderWhere).ToList();
46 }
47 //分页查询
48 public List<Customer> GetListPaged(int pageIndex,int pageSize,System.Linq.Expressions.Expression<Func<Customer,bool>> orderbyWhere)
49 {
50 return db.Customers.OrderBy(orderbyWhere).Skip((pageIndex - 1)*pageSize).Take(pageSize).ToList();
51 }
52 }
然后我们在DAL层新建一个BaseDAL类,类中内容是通过CustomerDAL修改而来的,将出现Customer的地方替换成了T,出现Customers的地方改成了CreateObjectSet<T>()
,修正后的类如下
1 public class BaseDAL<T> where T:class,new()
2 {
3 //数据库上下文对象
4 YYMMVCEntities db = new YYMMVCEntities();
5 /// <summary>
6 /// 新增操作
7 /// </summary>
8 public int Add(T customer)
9 {
10 //必须限定T的类型,只能为引用类型
11 db.CreateObjectSet<T>().AddObject(customer);
12 //保存成功后会将自增的ID设置成customer的主键属性
13 return db.SaveChanges();
14 }
15
16 //删除
17 public int DeleteBy(T model)
18 {
19
20 db.CreateObjectSet<T>().Attach(model);
21 db.CreateObjectSet<T>().DeleteObject(model);
22 return db.SaveChanges();
23 }
24 //根据条件删除
25 public int DeleteExpression(System.Linq.Expressions.Expression<Func<T, bool>> deleWhere)
26 {
27 List<T> customers = db.CreateObjectSet<T>().Where(deleWhere).ToList();
28 customers.ForEach(m => db.CreateObjectSet<T>().DeleteObject(m));
29 return db.SaveChanges();
30 }
31
32 //修改方法
33 public int Modify(T customer)
34 {
35 db.CreateObjectSet<T>().Attach(customer);
36 db.ObjectStateManager.ChangeObjectState(customer, EntityState.Modified);
37 return db.SaveChanges();
38 }
39
40 //查询
41 public List<T> GetListBy(System.Linq.Expressions.Expression<Func<T, bool>> seleWhere)
42 {
43 return db.CreateObjectSet<T>().Where(seleWhere).ToList();
44 }
45 //查询和排序
46 public List<T> GetListBy<Tkey>(System.Linq.Expressions.Expression<Func<T, bool>> seleWhere, System.Linq.Expressions.Expression<Func<T, Tkey>> orderWhere)
47 {
48 return db.CreateObjectSet<T>().Where(seleWhere).OrderBy(orderWhere).ToList();
49 }
50 //分页查询
51 public List<T> GetListPaged(int pageIndex, int pageSize, System.Linq.Expressions.Expression<Func<T, bool>> orderbyWhere)
52 {
53 return db.CreateObjectSet<T>().OrderBy(orderbyWhere).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
54
55 }
56 }
EF---结合三层方法的应用的更多相关文章
- 改善EF代码的方法(下)
本节,我们将介绍一些改善EF代码的方法,包括编译查询.存储模型视图以及冲突处理等内容. > CompiledQuery 提供对查询的编译和缓存以供重新使用.当相同的查询需要执行很多遍的时候,那么 ...
- C#学习-EF在三层中使用
1.搭建普通三层 DAL层,BLL层,Model层,Web层: DAL层引用Model层 BLL层引用DAL层和Model层 Web层引用BLL层和Model层 2.实现EF三层的搭建(添加引用,修改 ...
- C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制
在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...
- EF 底层基础方法
1 using System; 2 using System.Data; 3 using System.Collections.Generic; 4 using System.Data.Entity; ...
- EF结合三层:三层中数据层父类和业务层父类的使用
今天我们主要讨论下数据层父类和业务层父类的使用.众所周知,数据层无非就是实现增删改查的方法.无论是哪个实体类,无非就是为了实现增删改查方法,所有我们在三层的DAL层封装了一个BaseDAL类,来做增删 ...
- Entity Framework SqlFunctions 教你如何在EF调用sqlserver方法的函数存根
今天算是研究了一天的SqlFunctions,请教了几个群的牛人,居然发现大伙对这个都比较陌生, 有的甚至直指EF中是不能调用sqlserver里的方法的. 因为之前搞过linq to sql 里面的 ...
- 改善EF代码的方法(上)
本节,我们将介绍一些改善EF代码的相关方法,如NoTracking,GetObjectByKey, Include等. > MergeOption.NoTracking 当我们只需要读取某些数据 ...
- 【.NET-EF】Entity Framework学习笔记1 - VS2013没有EF的解决方法
解决方法:我本来也没有,百度了一下,在C:\ProgramData\Package Cache\{08AEF86A-1956-4846-B906-B01350E96E30}v12.0.20912.0\ ...
- Entity Framework 学习高级篇1—改善EF代码的方法(上)
本节,我们将介绍一些改善EF代码的相关方法,如NoTracking,GetObjectByKey, Include等. l MergeOption.NoTracking 当我们只需要读 ...
- EF 底层封装方法(供参考)
闲暇之余,整理了一下EF底层的一些基础方法,供查看,只有接口,具体实现需要你们自己写了. 建议:接口的实现定义为虚方法,当父类的方法不满住子类需求时,可以重写此方法 此接口都为公用方法,基本上满足小系 ...
随机推荐
- C++ new(2)
1. new与operator new C++中有很多语法让人难以理解,如:new operator(操作符,下同)和operator new之间差异,确切的说,应该是new与operator new ...
- uva 1605 building for UN ——yhx
The United Nations has decided to build a new headquarters in Saint Petersburg, Russia. It will have ...
- Java 嵌套解析 json
1.首先需要安装org.json.jar 2.类JSONObject用于创建一个json对象.其中的JSONObject.put(KEY, VALUE)用于向其中添加条目 3.JSONObject.g ...
- 译:Google的大规模集群管理工具Borg(二)------ Borg架构
3.Borg 架构 一个Borg的cell由一系列的机器组成,通常在cell运行着一个逻辑的中央控制器叫做Borgmaster,在cell中的每台机器上则运行着一个叫Borglet的代理进程.而Bor ...
- UVALive 6093 Emergency Room --优先队列实现的模拟
题意:给n个医生,这些医生有一个上班时间,然后给一些病人,病人有一个到达的时间,以及一些诊断,诊断有property(优先级)和duration(诊断时间)这两个属性,每个病人可能要诊断多次,最后问每 ...
- POJ 1061 青蛙的约会【扩展欧几里德】
设跳的次数为t 根据题意可得以下公式:(x+mt)%L=(y+nt)%L 变形得 (x+mt)-(y+nt)=kL (n-m)t+kL=x-y 令a=(n-m),b=L,c=x-y 得 at+bk=c ...
- bootstrap学习总结-css样式设计(二)
首先,很感谢各位园友对我的支持,关于bootstrap的学习总结,我会持续更新,如果有写的不对的地方,麻烦各位给我指正出来哈.关于上篇文章,固定布局和流式布局很关键,如果还不太清楚的可以再看看我写的h ...
- 补鞋匠---Cobbler 服务器自动搭建
Cobbler 服务器自动搭建http://tshare365.com/archives/439.html
- Linux 守护进程一
守护进程是一个后台进程,它无需用户输入就能运行,经常是提供某种服务. LInux作为服务器,主要的进程也都是为系统或用户提供后台服务功能. 常见的守护进程有Web服务器.邮件服务器以及数据库服务器等等 ...
- C# lambda表达式及初始化器
using System;using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1d { c ...