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底层的一些基础方法,供查看,只有接口,具体实现需要你们自己写了. 建议:接口的实现定义为虚方法,当父类的方法不满住子类需求时,可以重写此方法 此接口都为公用方法,基本上满足小系 ...
随机推荐
- [转]【HTTP】Fiddler(二) - 使用Fiddler做抓包分析
本文转自:http://blog.csdn.net/ohmygirl/article/details/17849983 上文( http://blog.csdn.net/ohmygirl/articl ...
- 搭建docker私有仓库,建立k8s集群
服务器IP角色分布 192.168.5.2 etcd server 192.168.5.2 kubernetes master 192.168.5.3 kubernetes node 192.168. ...
- 渐进记号 Asymptotic Notations-------geeksforgeeks 翻译
我们已经简单的讨论了下渐进分析以及最坏,平均和最佳情况的分析.渐进分析的主要思想是分析算法的效率,不用依靠计算机的具体快慢,不需要实现这个算法,也不需要真正去计算时间.渐进记号是一种数学的工具来表示渐 ...
- 2014 Super Training #10 G Nostop --矩阵快速幂
原题: FZU 2173 http://acm.fzu.edu.cn/problem.php?pid=2173 一开始看到这个题毫无头绪,根本没想到是矩阵快速幂,其实看见k那么大,就应该想到用快速幂什 ...
- UESTC 288 青蛙的约会 扩展GCD
设两只青蛙跳了t步,则此时A的坐标:x+mt,B的坐标:y+nt.要使的他们在同一点,则要满足: x+mt - (y+nt) = kL (p是整数) 化成: (n-m)t + kL = x-y (L ...
- tomcat7 - 烫手山芋之热部署
tomcat7部署,项目发布有很多种方式 1. 增量发布,把修改过得那些文件手动上传至tomcat,*.class *.xml 等等,这样的缺点非常大,需要断开tomcat,记住那些你修改过得文件,很 ...
- [本人开发的游戏] Discuz网页动物园插件1.0Beta发布!让积分流动起来!
插件发布 插件名称: DZ网页动物园插件 插件来源: 原创插件 适用版本: Discuz! X3 语言编码: GBK简体 UTF8简体 BIG5繁体 UTF8繁体 最后更新时间: 2014- ...
- mysqli_stmt预处理类的使用
- Python-json 和 pickle
这是用于序列化的两个模块 json:用于字符串和python数据类型间进行转换 pickle:用于python特有的类型和python的数据类型间进行转换 json模块提供了四个功能:dumps du ...
- git review报错一例
在线上修改代码,最后使用git review提交代码审核的时候出现报错如下:[wangshibo@115~]$ vim testfile #修改代码[wangshibo@115~] ...