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底层的一些基础方法,供查看,只有接口,具体实现需要你们自己写了. 建议:接口的实现定义为虚方法,当父类的方法不满住子类需求时,可以重写此方法 此接口都为公用方法,基本上满足小系 ...
随机推荐
- Super A^B mod C
Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000000000,1<=B ...
- hdu Flow Problem (最大流 裸题)
最大流裸题,贴下模版 view code#include <iostream> #include <cstdio> #include <cstring> #incl ...
- POJ 2777 Count Color(线段树之成段更新)
Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33311 Accepted: 10058 Descrip ...
- java自带命令工具
jstat,这个工具很强大,可以监测Java虚拟机GC多方面的状态,具体参数含义参见此链接: ./jstat -gc 84012 1000 3 S0C S1C S0U S1U ...
- NopCommerce适应多数据库方案
有时候一个项目需要连接多个数据库,以实现不同数据库的数据在同个项目的共享. 如果已经安装了nop,则需要在第二个数据库新建一个表,nop现在无法自动通过迁移来实现第二个或者更多数据库,所以这点需要我们 ...
- 1.NopCommerce下载与安装
NoCommerce是基于微软ASP.NET MVC + EntityFramework 技术开发的一套开源电子商城系统,其架构与设计非常精妙被誉为.NET商城的经典之作. 作为一个.NET程序爱好者 ...
- ZBrush中的笔刷该怎样制作
ZBrush给用户提供了许多的常用笔刷,我们可以使用这些笔刷自由地发挥创意.为了让雕刻速度更快,模型刻画更细致我们常常也会创建自定义笔刷,本文教您在ZBrush中制作笔刷. 查看更多内容请直接前往:h ...
- [转载]ExtJs4 笔记(4) Ext.XTemplate 模板
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...
- Unity3D面试题汇总
1.请描述游戏动画有哪几种,以及其原理. 2.alpha blend 工作原理 3.写光照计算中的diffuse的计算公式 4.lod是什么,优缺点是什么 5.两种阴影判断的方法工作原理 6.MipM ...
- 如何将list转为json?