zoukankan      html  css  js  c++  java
  • mvc+dwz第三天

    再DAL类库中封装BaseDAL

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    using System.Linq.Expressions;
    using System.Reflection;
    using Xiaowu.Model;
    namespace Xiaowu.DAL
    {
    public class BaseDAL<T> where T : class
    {
    StudentDBContext dbcontext = new StudentDBContext();
    /// <summary>
    /// IQueryable延迟加载集合,调用时才回去加载到内存
    /// List查找会立即加载到内存
    /// </summary>
    /// <returns></returns>
    public IQueryable<T> GetEntitys(Expression<Func<T, bool>> Lambdawhere)
    {
    return dbcontext.Set<T>().Where(Lambdawhere);
    }

    /// <summary>
    /// 新增
    /// </summary>
    /// <param name="entity"></param>
    /// <returns></returns>
    public int Add(T entity)
    {
    dbcontext.Set<T>().Add(entity);
    return dbcontext.SaveChanges();
    }

    /// <summary>
    /// 删除
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public int Delete(int id)
    {
    //通过ID查询这个实体
    T entity = dbcontext.Set<T>().Find(id);
    dbcontext.Set<T>().Remove(entity);
    return dbcontext.SaveChanges();
    }

    /// <summary>
    /// 修改
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public int Update(T entity)
    {
    //设置当前实体粘状态
    dbcontext.Entry(entity).State = System.Data.Entity.EntityState.Modified;
    return dbcontext.SaveChanges();
    }

    /// <summary>
    /// 修改2/add/2020/11/16
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    public int Update2(T entity)
    {
    dbcontext.Set<T>().Attach(entity);
    PropertyInfo[] props = entity.GetType().GetProperties();
    foreach (PropertyInfo prop in props)
    {
    if (prop.GetValue(entity, null) != null)
    {
    if (prop.GetValue(entity, null).ToString() == " ")
    dbcontext.Entry(entity).Property(prop.Name).CurrentValue = null;
    dbcontext.Entry(entity).Property(prop.Name).IsModified = true;
    }
    }
    return dbcontext.SaveChanges();
    }

    #region 分页查询/add/2020/11/16
    /// <summary>
    /// Entities的分页数据查询
    /// </summary>
    /// <typeparam name="S">Orderby根据排序的元素数据类型</typeparam>
    /// <param name="pageIndex">要查询到页码</param>
    /// <param name="pageSize">每页的条数</param>
    /// <param name="total">总条数</param>
    /// <param name="whereLambda">过滤数据的Lambda表达式</param>
    /// <param name="orderByLambda">指定排序规则的Lambda表达式</param>
    /// <param name="IsAsc">是否是升序排序?</param>
    /// <returns></returns>
    public IQueryable<T> GetPageEntities<S>(int pageIndex, int pageSize, out int total, Expression<Func<T, bool>> whereLambda, Expression<Func<T, S>> orderByLambda, bool IsAsc)
    {
    total = dbcontext.Set<T>().Where(whereLambda).Count();
    if (IsAsc)
    {
    return dbcontext.Set<T>().Where(whereLambda).OrderBy<T, S>(orderByLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).AsQueryable();

    }
    else
    {
    return dbcontext.Set<T>().Where(whereLambda).OrderByDescending<T, S>(orderByLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).AsQueryable();

    }
    }

    #endregion
    }
    }

  • 相关阅读:
    一天摄入多少蛋白质比较合理?
    给函数添加元数据(python)
    反转链表(C++实现)
    删除链表的中间节点(C++实现)
    在双向链表中删除倒数第K个链表节点(C++实现)
    在单链表中删除倒数第K个节点(C++实现)
    二叉树的创建及遍历(递归和非递归C++实现)
    删除排序数组中的重复项(C++实现)
    打印两个有序链表的公共部分(C++实现)
    用一个栈实现另一个栈的排序(C++实现)
  • 原文地址:https://www.cnblogs.com/wugh8726254/p/14002567.html
Copyright © 2011-2022 走看看