zoukankan      html  css  js  c++  java
  • EF 用到的两个类

    EFDBEntities类

    using System;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Configuration;
    using System.Data.Entity;
    using System.Linq;
    
    namespace HRMS.Models
    {
        public partial class EFDBEntities : DbContext
        {
            private static string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();
    
            public EFDBEntities()
                : base(connString)
            {
            }
    
            public virtual DbSet<PD_Bank> PD_Bank { get; set; }
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
            }
        }
    }

    DAL类

    using System;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    using System.Linq;
    using System.Linq.Expressions;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    using HRMS.Models;
    
    
    namespace HRMS.SQLServerDAL
    {
    
        /// <summary>
        /// T为引用类型,且有个无参的构造函数
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public class BaseDAL<T> where T : class, new()
        {
            private EFDBEntities db = new EFDBEntities();
    
            #region 通用方法
    
            public int Insert(T model)
            {
                db.Set<T>().Add(model);
                return db.SaveChanges();
            }
    
            public int DeleteByPrimaryKey(T model)
            {
                db.Set<T>().Attach(model);
                db.Set<T>().Remove(model);
                return db.SaveChanges();
            }
    
            public int UpdateByPrimaryKey(T model)
            {
                db.Set<T>().Attach(model);
                db.Entry(model).State = EntityState.Modified;
                return db.SaveChanges();
            }
    
            public List<T> GetAllList()
            {
                return db.Set<T>().Select(p => p).ToList();
            }
    
            public int InsertRange(List<T> list)
            {
                db.Set<T>().AddRange(list);
                return db.SaveChanges();
            }
    
            public int DeleteRange(List<T> list)
            {
                db.Set<T>().RemoveRange(list);
                return db.SaveChanges();
            }
    
            /// <summary>
            /// 分页查询
            /// </summary>
            /// <typeparam name="TKey">排序的字段的类型</typeparam>
            /// <param name="orderLambda">按上面方式排序,升序还是降序</param>
            /// <param name="whereLambda">分页的Where条件</param>
            /// <param name="pagesize">每页多少条数据</param>
            /// <param name="pageIndex">当前第几页</param>
            /// <returns></returns>
            public List<T> GetPageList<TKey>(Expression<Func<T, TKey>> orderLambda, Expression<Func<T, bool>> whereLambda, int pagesize, int pageIndex)
            {
                return db.Set<T>().Where(whereLambda)
                    .OrderBy(orderLambda)
                    .Skip((pageIndex - 1) * pagesize)
                    .Take(pagesize)
                    .Select(u => u).ToList();
            }
    
    
            /// <summary>
            /// 反射实现两个类的对象之间相同属性的值的复制
            /// 适用于没有新建实体之间
            /// </summary>
            /// <typeparam name="D">返回的实体</typeparam>
            /// <typeparam name="S">数据源实体</typeparam>
            /// <param name="d">返回的实体</param>
            /// <param name="s">数据源实体</param>
            /// <returns></returns>
            public D MapperToModel<D, S>(D d, S s)
            {
                try
                {
                    var Types = s.GetType();//获得类型  
                    var Typed = typeof(D);
                    foreach (PropertyInfo sp in Types.GetProperties())//获得类型的属性字段  
                    {
                        foreach (PropertyInfo dp in Typed.GetProperties())
                        {
                            if (dp.Name == sp.Name && dp.PropertyType == sp.PropertyType && dp.Name != "Error" && dp.Name != "Item")//判断属性名是否相同  
                            {
                                dp.SetValue(d, sp.GetValue(s, null), null);//获得s对象属性的值复制给d对象的属性  
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                return d;
            }
    
    
            /// <summary>
            /// 反射实现两个类的对象之间相同属性的值的复制
            /// 适用于初始化新实体
            /// </summary>
            /// <typeparam name="D">返回的实体</typeparam>
            /// <typeparam name="S">数据源实体</typeparam>
            /// <param name="s">数据源实体</param>
            /// <returns>返回的新实体</returns>
            public D Mapper<D, S>(S s)
            {
                D d = Activator.CreateInstance<D>(); //构造新实例
                try
                {
                    var Types = s.GetType();//获得类型  
                    var Typed = typeof(D);
                    foreach (PropertyInfo sp in Types.GetProperties())//获得类型的属性字段  
                    {
                        foreach (PropertyInfo dp in Typed.GetProperties())
                        {
                            if (dp.Name == sp.Name && dp.PropertyType == sp.PropertyType && dp.Name != "Error" && dp.Name != "Item")//判断属性名是否相同  
                            {
                                dp.SetValue(d, sp.GetValue(s, null), null);//获得s对象属性的值复制给d对象的属性  
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                return d;
            }
    
            #endregion
    
    
    
        }
    }

    BLL类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Linq.Expressions;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    using HRMS.Models;
    using HRMS.SQLServerDAL;
    
    namespace HRMS.BLL
    {
        public class BaseBLL<T> where T : class, new()
        {
            BaseDAL<T> dal = new BaseDAL<T>();
    
            public int Insert(T model)
            {
                return dal.Insert(model);
            }
    
            public int DeleteByPrimaryKey(T model)
            {
                return dal.DeleteByPrimaryKey(model);
            }
    
            public int UpdateByPrimaryKey(T model)
            {
                return dal.UpdateByPrimaryKey(model);
            }
    
            public List<T> GetAllList()
            {
                return dal.GetAllList();
            }
    
            public int InsertRange(List<T> list)
            {
                return dal.InsertRange(list);
            }
    
            public int DeleteRange(List<T> list)
            {
                return dal.DeleteRange(list);
            }
    
            /// <summary>
            /// 分页查询
            /// </summary>
            /// <typeparam name="TKey">排序的字段的类型</typeparam>
            /// <param name="orderLambda">按上面方式排序,升序还是降序</param>
            /// <param name="whereLambda">分页的Where条件</param>
            /// <param name="pagesize">每页多少条数据</param>
            /// <param name="pageIndex">当前第几页</param>
            /// <returns></returns>
            public List<T> GetPageList<TKey>(Expression<Func<T, TKey>> orderLambda, Expression<Func<T, bool>> whereLambda, int pagesize, int pageIndex)
            {
                return dal.GetPageList(orderLambda, whereLambda, pagesize, pageIndex);
            }
    
            /// <summary>
            /// 反射实现两个类的对象之间相同属性的值的复制
            /// 适用于没有新建实体之间
            /// </summary>
            /// <typeparam name="D">返回的实体</typeparam>
            /// <typeparam name="S">数据源实体</typeparam>
            /// <param name="d">返回的实体</param>
            /// <param name="s">数据源实体</param>
            /// <returns></returns>
            public D MapperToModel<D, S>(D d, S s)
            {
                return dal.MapperToModel(d, s);
            }
    
            /// <summary>
            /// 反射实现两个类的对象之间相同属性的值的复制
            /// 适用于初始化新实体
            /// </summary>
            /// <typeparam name="D">返回的实体</typeparam>
            /// <typeparam name="S">数据源实体</typeparam>
            /// <param name="s">数据源实体</param>
            /// <returns>返回的新实体</returns>
            public D Mapper<D, S>(S s)
            {
                return dal.Mapper<D, S>(s);
            }
    
    
        }
    }

     

    using System;using System.Collections.Generic;using System.Data.Entity;using System.Data.Entity.Infrastructure;using System.Linq;using System.Linq.Expressions;using System.Reflection;using System.Text;using System.Threading.Tasks;using HRMS.Models;

    namespace HRMS.SQLServerDAL{
        /// <summary>    /// T为引用类型,且有个无参的构造函数    /// </summary>    /// <typeparam name="T"></typeparam>    public class BaseDAL<T> where T : class, new()    {        private EFDBEntities db = new EFDBEntities();
            #region 通用方法
            public int Insert(T model)        {            db.Set<T>().Add(model);            return db.SaveChanges();        }
            public int DeleteByPrimaryKey(T model)        {            db.Set<T>().Attach(model);            db.Set<T>().Remove(model);            return db.SaveChanges();        }
            public int UpdateByPrimaryKey(T model)        {            db.Set<T>().Attach(model);            db.Entry(model).State = EntityState.Modified;            return db.SaveChanges();        }
            public List<T> GetAllList()        {            return db.Set<T>().Select(p => p).ToList();        }
            public int InsertRange(List<T> list)        {            db.Set<T>().AddRange(list);            return db.SaveChanges();        }
            public int DeleteRange(List<T> list)        {            db.Set<T>().RemoveRange(list);            return db.SaveChanges();        }
            /// <summary>        /// 分页查询        /// </summary>        /// <typeparam name="TKey">排序的字段的类型</typeparam>        /// <param name="orderLambda">按上面方式排序,升序还是降序</param>        /// <param name="whereLambda">分页的Where条件</param>        /// <param name="pagesize">每页多少条数据</param>        /// <param name="pageIndex">当前第几页</param>        /// <returns></returns>        public List<T> GetPageList<TKey>(Expression<Func<T, TKey>> orderLambda, Expression<Func<T, bool>> whereLambda, int pagesize, int pageIndex)        {            return db.Set<T>().Where(whereLambda)                .OrderBy(orderLambda)                .Skip((pageIndex - 1) * pagesize)                .Take(pagesize)                .Select(u => u).ToList();        }

            /// <summary>        /// 反射实现两个类的对象之间相同属性的值的复制        /// 适用于没有新建实体之间        /// </summary>        /// <typeparam name="D">返回的实体</typeparam>        /// <typeparam name="S">数据源实体</typeparam>        /// <param name="d">返回的实体</param>        /// <param name="s">数据源实体</param>        /// <returns></returns>        public D MapperToModel<D, S>(D d, S s)        {            try            {                var Types = s.GetType();//获得类型                  var Typed = typeof(D);                foreach (PropertyInfo sp in Types.GetProperties())//获得类型的属性字段                  {                    foreach (PropertyInfo dp in Typed.GetProperties())                    {                        if (dp.Name == sp.Name && dp.PropertyType == sp.PropertyType && dp.Name != "Error" && dp.Name != "Item")//判断属性名是否相同                          {                            dp.SetValue(d, sp.GetValue(s, null), null);//获得s对象属性的值复制给d对象的属性                          }                    }                }            }            catch (Exception ex)            {                throw ex;            }            return d;        }

            /// <summary>        /// 反射实现两个类的对象之间相同属性的值的复制        /// 适用于初始化新实体        /// </summary>        /// <typeparam name="D">返回的实体</typeparam>        /// <typeparam name="S">数据源实体</typeparam>        /// <param name="s">数据源实体</param>        /// <returns>返回的新实体</returns>        public D Mapper<D, S>(S s)        {            D d = Activator.CreateInstance<D>(); //构造新实例            try            {                var Types = s.GetType();//获得类型                  var Typed = typeof(D);                foreach (PropertyInfo sp in Types.GetProperties())//获得类型的属性字段                  {                    foreach (PropertyInfo dp in Typed.GetProperties())                    {                        if (dp.Name == sp.Name && dp.PropertyType == sp.PropertyType && dp.Name != "Error" && dp.Name != "Item")//判断属性名是否相同                          {                            dp.SetValue(d, sp.GetValue(s, null), null);//获得s对象属性的值复制给d对象的属性                          }                    }                }            }            catch (Exception ex)            {                throw ex;            }            return d;        }
            #endregion


        }}

  • 相关阅读:
    【宋红康程序思想学习日记5】数组排序之冒泡法
    求割点 poj 1523
    网络流 poj 3308 最小割
    网络流最小割 POJ 3469
    网络流 POJ2112
    网络流 HDU 3605
    网络流HDU 2883
    网络流 最大流HDU 3549
    微信公众平台开发者中心服务器配置Token验证失败问题
    排列熵算法简介及c#实现
  • 原文地址:https://www.cnblogs.com/nanqinling/p/14197869.html
Copyright © 2011-2022 走看看