EF(Entity Framework)通用DBHelper通用类,增删改查以及列表

(1)通用类用法

其中

通用类名:DBhelper

实体类:UserInfo

 1   //新增
 2   DBHelper<UserInfo> dbhelper = new DBHelper<UserInfo>();
 3   UserInfo userinfo = new UserInfo();
 4   userinfo.Name = "1";
 5   dbhelper.Add(userinfo);
 6
 7   //根据条件查找列表
 8   var entityes = dbhelper.FindList(x => x.Name == "1");
 9   List<UserInfo> list = entityes.ToList<UserInfo>();
10
11   Response.Write("姓名为1的数量为:"+list.Count);
12
13   //分页查找
14   int rowcount = 0;
15   var entityes2 = dbhelper.FindPagedList(2, 10, out rowcount,x=>x.Name=="1",s=>s.Id,true);

(X)EF(Entity Framework)通用DBHelper通用类,增删改差以及列表

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Web;

public class DBHelper<T> where T : class
{
    AproSysEntities context = new AproSysEntities();
    /// <summary>
    /// 新增一个实体
    /// </summary>
    /// <param name="entity"></param>
    /// <returns></returns>
    public int Add(T entity)
    {
        context.Entry<T>(entity).State = System.Data.EntityState.Added;
        return context.SaveChanges();
    }
    /// <summary>
    /// 删除一个实体
    /// </summary>
    /// <param name="entity"></param>
    /// <returns></returns>
    public int Remove(T entity)
    {
        context.Entry<T>(entity).State = System.Data.EntityState.Deleted;
        return context.SaveChanges();
    }
    /// <summary>
    /// 修改一个实体
    /// </summary>
    /// <param name="entity"></param>
    /// <returns></returns>
    public int Update(T entity)
    {
        context.Entry<T>(entity).State = System.Data.EntityState.Modified;
        return context.SaveChanges();
    }
    /// <summary>
    /// 批量新增实体
    /// </summary>
    /// <param name="dbContext"></param>
    /// <returns></returns>
    public int AddList(params T[] entities)
    {
        int result = 0;
        for (int i = 0; i < entities.Count(); i++)
        {
            if (entities[i] == null)
                continue;
            context.Entry<T>(entities[i]).State = System.Data.EntityState.Added;
            if (i != 0 && i % 20 == 0)
            {
                result += context.SaveChanges();
            }
        }
        if (entities.Count() > 0)
            result += context.SaveChanges();
        return result;
    }
    /// <summary>
    /// 批量删除实体
    /// </summary>
    /// <param name="where"></param>
    /// <returns></returns>
    public int RemoveList(Expression<Func<T, bool>> where)
    {
        var temp = context.Set<T>().Where(where);
        foreach (var item in temp)
        {
            context.Entry<T>(item).State = System.Data.EntityState.Deleted;
        }
        return context.SaveChanges();
    }
    /// <summary>
    /// 按条件查询
    /// </summary>
    /// <param name="where"></param>
    /// <returns></returns>
    public IQueryable<T> FindList(Expression<Func<T, bool>> where)
    {
        var temp = context.Set<T>().Where(where);
        return temp;
    }
    /// <summary>
    /// 按条件查询,排序
    /// </summary>
    /// <typeparam name="S"><peparam>
    /// <param name="where"></param>
    /// <param name="orderBy"></param>
    /// <param name="isAsc"></param>
    /// <returns></returns>
    public IQueryable<T> FindList<S>(Expression<Func<T, bool>> where, Expression<Func<T, S>> orderBy, bool isAsc)
    {

        var list = context.Set<T>().Where(where);
        if (isAsc)
            list = list.OrderBy<T, S>(orderBy);
        else
            list = list.OrderByDescending<T, S>(orderBy);
        return list;
    }
    /// <summary>
    /// 按条件查询,分页
    /// </summary>
    /// <param name="pageIndex"></param>
    /// <param name="pageSize"></param>
    /// <param name="rowCount"></param>
    /// <param name="where"></param>
    /// <returns></returns>
    public IQueryable<T> FindPagedList(int pageIndex, int pageSize, out int rowCount, Expression<Func<T, bool>> where)
    {
        var list = context.Set<T>().Where(where);
        rowCount = list.Count();
        list = list.Skip(pageSize * (pageIndex - 1)).Take(pageSize);
        return list;
    }
    /// <summary>
    /// 按条件查询,分页,排序
    /// </summary>
    /// <typeparam name="S"><peparam>
    /// <param name="pageIndex"></param>
    /// <param name="pageSize"></param>
    /// <param name="rowCount"></param>
    /// <param name="where"></param>
    /// <param name="orderBy"></param>
    /// <param name="isAsc"></param>
    /// <returns></returns>
    public IQueryable<T> FindPagedList<S>(int pageIndex, int pageSize, out int rowCount, Expression<Func<T, bool>> where, Expression<Func<T, S>> orderBy, bool isAsc)
    {
        var list = context.Set<T>().Where(where);
        rowCount = list.Count();
        if (isAsc)
            list = list.OrderBy<T, S>(orderBy).Skip(pageSize * (pageIndex - 1)).Take(pageSize);
        else
            list = list.OrderByDescending<T, S>(orderBy).Skip(pageSize * (pageIndex - 1)).Take(pageSize);
        return list;
    }
}
时间: 2024-10-24 06:06:00

EF(Entity Framework)通用DBHelper通用类,增删改查以及列表的相关文章

c# entity framework core树状结构增删改查

首先创建一个.net core控制台程序,添加实体类 实体类:Employee using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; namespace TreeEntityDemo { /// <summary> /// 员工实体 /// </summary> public class Employee { public int Id { get; set; }

基于Entity Framework的自定义分页,增删改的通用实现

简介 之前写个一个基于Dapper的分页实现,现在再来写一个基于Entity Framework的分页实现,以及增删改的通用实现. 代码 还是先上代码:https://github.com/jinweijie/EF.GenericRepository 如何运行示例 还是像先前一样: 1. 先Clone下代码,在Database里面解压缩Database.7z 2. Attach到Sql Server LocalDB上.如果你用的不是Sql Server的LocalDB,你需要更改App.Conf

Android的SQLiteDataBase小项目,实现user类登陆注册以及student类增删改查

关于SQLiteDataBase这块,大体有两种主要的实现方式,一种是不使用Helper类的方式,此种方式存在一个弊端,即不能oncreate两次,如果重复使用oncreate的button,则会报错,所以为了避免这种错误,在此项目中使用类继承SQLiteOpenHelper的方式进行SQLite3小型数据库的小项目开发,简单的实现登陆注册,以及对特定vo类的增删改查,中间还夹杂了ListView,ArrayAdapter,以及Intent的散知识点. 以下为正文:首先介绍以下我写的项目的框架,

EF总结--模型创建和数据的增删改查

EF的创建方式有三种: DataBaseFirst 新建项-ADO.NET实体数据模型-从数据库生成 ModelFirst 新建项-ADO.NET实体数据模型-空模型,在设计器中设计实体和它们之间的关系,之后右击选择从模型生成数据库. CodeFirst 通过写代码的方式,创建实体,上下文,数据库也是通过写代码生成. LinQ To EF进行增删改查 增: //实例化上下文 departmentEntities dbcontext = new departmentEntities(); //添加

EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)

前言 此文章只是为了给新手程序员,和经验不多的程序员,在学习ef和lambada表达式的过程中可能遇到的问题. 本次使用订单表和员工表建立多对多关系. 首先是订单表: public class Order { public int OrderId { get; set; } public string OrderTitle { get; set; } public string CustomerName { get; set; } public DateTime TransactionDate

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点

popup的简单应用举例(具体在增删改查组件中用到)以及补充的知识点 一.首先说一下自执行函数 1. 立即执行函数是什么?也就是匿名函数 立即执行函数就是 声明一个匿名函数 马上调用这个匿名函数 2.popup的举例 点击,弹出一个新的窗口.保存完事,页面不刷新数据就返回了.(点击admin的+,弹出的框就是用popup来做的) 具体操作步骤: 1.urls.py urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/',

week_one-python基础 列表 增删改查

# Author:larlly'''#列表增删改查#定义列表name = ["wo","ni","ta","wo"] #定义列表num_list = list(range(1,10)) #range生成范围的数,强制转化为列表#查print(num_list)print(name[0])print(name[0:2]) #顾头不顾尾print(name[-1])print(name[:]) #取所有值print(name[-3

列表的初识,列表的索引切片,列表的增删改查,列表的嵌套,元组的初识,range

1 内容总览 列表的初识 列表的索引切片 列表的增删改查 列表的嵌套 元组的初识(了解) 元组的简单应用(了解) range 2 具体内容 列表的初识 why: str: 存储少量的数据.切片出来全都是str类型,存储的数据单一. list:能储存大量的数据.包含不同类型的数据.且有顺序,有规律,可自己制作设计其中的数据,可修改 what:list l1 = [100, 'alex',True,[1, 2, 3]] 可承载任意数据类型,存储大量的数据. python常用的容器型数据类型. 列表是

abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之六(三十二)

abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(net core)+easyui+efcore实现仓储管理系统——定义仓储并实现 (四) abp(net core)+easyui