MVC实现通用的增删改查。使用接口(三)学习
来源:互联网 发布:js style.marginleft 编辑:程序博客网 时间:2024/05/29 09:39
在IDAL层增加IBase类
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Dulei.Model;namespace Dulei.IDAL{ /// <summary> /// 抽象里所有的数据库访问层Dal实例的公共的方法约束。 /// </summary> public interface IBaseDal<T> where T : class ,new() { T Add(T entity); bool Update(T entity); bool Delete(T entity); int Delete(params int[] ids); //u=>true IQueryable<T> LoadEntities(Func<T, bool> whereLambda);//规约设计模式。 where a>10 IQueryable<T> LoadPageEntities<S>(int pageSize, int pageIndex, out int total, Func<T, bool> whereLambda , Func<T, S> orderbyLambda, bool isAsc); }}
using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using Dulei.Model;namespace Dulei.DAL{ public class BaseDal<T> where T : class , new() { Model.DataModelContainer db = new DataModelContainer(); public virtual T Add(T entity) { db.Set<T>().Add(entity); db.SaveChanges(); return entity; } public virtual bool Update(T entity) { //可以不用附加: //db.Set<T>().Attach(entity); 内部就是只是把实体的 状态改成unchange跟数据库查询出来的状态时一样的。 db.Entry(entity).State = EntityState.Modified; return db.SaveChanges() > 0; } public virtual bool Delete(T entity) { db.Entry(entity).State = EntityState.Deleted; return db.SaveChanges() > 0; } public virtual int Delete(params int[] ids) { //T entity =new T(); //entity.ID //首先可以通过 泛型的基类的约束来实现对id字段赋值。 //也可也使用反射的方式。 foreach (var item in ids) { var entity = db.Set<T>().Find(item);//如果实体已经在内存中,那么就直接从内存拿,如果内存中跟踪实体没有,那么才查询数据库。 db.Set<T>().Remove(entity); } return db.SaveChanges(); } public IQueryable<T> LoadEntities(Func<T, bool> whereLambda) { return db.Set<T>().Where(whereLambda).AsQueryable(); } public IQueryable<T> LoadPageEntities<S>(int pageSize, int pageIndex, out int total, Func<T, bool> whereLambda, Func<T, S> orderbyLambda, bool isAsc) { total = db.Set<T>().Where(whereLambda).Count(); if (isAsc) { return db.Set<T>() .Where(whereLambda) .OrderBy(orderbyLambda) .Skip(pageSize * (pageIndex - 1)) .Take(pageSize) .AsQueryable(); } else { return db.Set<T>() .Where(whereLambda) .OrderByDescending(orderbyLambda) .Skip(pageSize * (pageIndex - 1)) .Take(pageSize) .AsQueryable(); } } }}
最后在DAL层在UserInfo类修改继承IBase接口
public class UserInfoDal : BaseDal<UserInfo>, IUserInfoDal并实现接口
0 0
- MVC实现通用的增删改查。使用接口(三)学习
- MVC学习笔记二:实现简单的增删改查
- 使用List接口实现对数据的增删改查
- Mybatis入门学习三:实现数据的增删改查
- MVC实现增删查改
- 通用DAO之MyBatis封装,封装通用的增删改查(三)
- mybatis学习(三)--增删改查
- MongoDB 学习三(数据库的增删改查)
- DBUtils学习之——使用ResultSetHandler接口的各个实现类实现数据库的增删改查
- 学习笔记-泛型的使用:通用数据库增删改查
- Mybatis学习(3)实现数据的增删改查
- ASP.NET MVC学习---(三)EF简单增删改查
- 通用增删改查
- MyBatis使用接口来实现增删改查
- Android学习之使用SQLite实现简单的(CRUD)增删改查
- MyBatis(三)增删改查--基于接口
- Spring MVC 学习笔记5 —— 实现简单的用户管理,增删改查(1)建立user model
- 使用jdbc实现简单的mvc模式的增删改查
- h264 profile & level
- windows 8.1 下91手机助手解决方案
- ldap(一)
- Unity手游之路<九>自动寻路Navmesh之高级主题
- ffmpeg 实现音频aac编码
- MVC实现通用的增删改查。使用接口(三)学习
- Mysql数据库学习
- Android抓包工具tcpdump使用教程(整理)
- 为什么sizeof一个empty class的结果是1
- poj2197||zoj2406 Jill's Tour Paths(回溯+优先队列)
- Android NDK之----- C调用Java [GetMethodID方法的使用]
- ,net 3.5到.net4.0的登录页面无法跳转的问题
- 前世今生之linux内存管理
- FZU 2150 Fire Game