zoukankan      html  css  js  c++  java
  • EfRepository

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Linq.Expressions;
    using System.Text;
    using System.Data.Entity;

    class EfRepository
    {
    private DbContext context;

    #region 构造函数
    public EfRepository(DbContext dbcontext)
    {
    context = dbcontext;
    }
    #endregion

    #region IRepository

    public IQueryable<T> All<T>() where T : class
    {
    return context.Set<T>().AsNoTracking();
    }

    public void Update<T>(T entity) where T : class
    {
    var entry = context.Entry(entity);
    if (entry.State == EntityState.Detached)
    {
    context.Set<T>().Attach(entity);
    }
    entry.State = EntityState.Modified;
    }

    public void Insert<T>(T entity) where T : class
    {
    context.Set<T>().Add(entity);
    }

    public void Delete<T>(T entity) where T : class
    {
    var entry = context.Entry(entity);
    if (entry.State == EntityState.Detached)
    {
    context.Set<T>().Attach(entity);
    }
    entry.State = EntityState.Deleted;
    context.Set<T>().Remove(entity);
    }

    public void Delete<T>(Expression<Func<T, bool>> conditions) where T : class
    {
    var list = Find<T>(conditions);
    foreach (var item in list)
    {
    Delete<T>(item);
    }

    }

    public T Get<T>(Expression<Func<T, bool>> conditions) where T : class
    {
    return All<T>().FirstOrDefault(conditions);
    }

    public List<T> Find<T>(Expression<Func<T, bool>> conditions = null) where T : class
    {
    if (conditions != null)
    {
    return All<T>().Where(conditions).ToList();
    }
    else
    {
    return All<T>().ToList();
    }

    }

    public List<T> Find<T, S>(Expression<Func<T, bool>> conditions, Expression<Func<T, S>> orderBy, int pageSize, int pageIndex, out int totalCount) where T : class
    {
    var queryList = conditions == null ?
    All<T>() :
    All<T>().Where(conditions);

    totalCount = queryList.Count();

    return queryList.OrderByDescending(orderBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
    }

    public List<T> SqlQuery<T>(string sql)
    {
    return context.Database.SqlQuery<T>(sql).ToList();
    }

    public int ExecuteSqlCommand(string sql)
    {
    return context.Database.ExecuteSqlCommand(sql);
    }

    public int SaveChanges()
    {
    return context.SaveChanges();
    }

    public void Dispose()
    {
    context.Dispose();
    }

    public long GetNextSequenceValue(string sequenceName)
    {
    var rawQuery = context.Database.SqlQuery<long>(string.Format("SELECT NEXT VALUE FOR {0}", sequenceName)).ToList();
    long nextVal = rawQuery.Single();
    return nextVal;
    }


    #endregion
    }

  • 相关阅读:
    相关分析[SDOI2017]
    排序[HEOI2016/TJOI2016]
    逆序对[AHOI2008]
    逆序对数列[HAOI2009]
    小Z的袜子「2009国家集训队」
    http抓包—Content-Type讲解
    mysql——leetcode问题记录
    linux--vi命令
    Linux—echo命令
    Linux—文件命令之touch命令
  • 原文地址:https://www.cnblogs.com/pengzhihua/p/7243319.html
Copyright © 2011-2022 走看看