• 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
    }

  • 相关阅读:
    不同浏览器对于textarea中换行符的处理
    apache 页面压缩技术mod_deflate安装和配置
    php5+Apache2+mysql+Eclipse debug完全配置
    php程序的国际化(转载)
    PHP加载mysql DDL会失败
    mysql绿色版注册服务
    DEDE利用自由列表创建全站RSS订阅内容更新整站.xml文档
    PHP模拟多线程请求
    在Mac OS X中配置Apache + PHP + MySQL(转)
    ThinkPHP框架项目开发专题自动验证
  • 原文地址:https://www.cnblogs.com/pengzhihua/p/7243319.html
Copyright © 2020-2023  润新知