entity framework 公共类

public abstract class BaseService<T> where T : class
{
    private static readonly DatabaseContext db = new DatabaseContext();

    public static T Add(T entity)
    {
        db.Entry<T>(entity).State = EntityState.Added;
        db.SaveChanges();
        return entity;
    }

    public static int Count(Expression<Func<T, bool>> predicate)
    {
        return db.Set<T>().Count(predicate);
    }

    public static bool Update(T entity)
    {
        db.Set<T>().Attach(entity);
        db.Entry<T>(entity).State = EntityState.Modified;
        return db.SaveChanges() > 0;
    }

    public static bool Delete(T entiry)
    {
        db.Set<T>().Attach(entiry);
        db.Entry<T>(entiry).State = EntityState.Deleted;
        return db.SaveChanges() > 0;
    }

    public static bool Exist(Expression<Func<T, bool>> predicate)
    {
        return db.Set<T>().Any(predicate);
    }

    public static T Find(Expression<Func<T, bool>> predicate)
    {
        return db.Set<T>().FirstOrDefault(predicate);
    }

    public static IQueryable<T> FindList(Expression<Func<T, bool>> predicate, int pageIndex, int pageSize, int total, params OrderFieldModel[] orderByExpression)
    {
        var query = db.Set<T>().Where(predicate);

        var parameter = Expression.Parameter(typeof(T), "o");
        if (orderByExpression != null && orderByExpression.Length > 0)
        {
            foreach (var orderField in orderByExpression)
            {
                var property = typeof(T).GetProperty(orderField.PropertyName);
                var propertyAccess = Expression.MakeMemberAccess(parameter, property);
                var orderByExp = Expression.Lambda(propertyAccess, parameter);
                string orderName = orderField.IsDESC ? "OrderByDescending" : "OrderBy";
                MethodCallExpression resultExp = Expression.Call(typeof(Queryable), orderName, new Type[] { typeof(T), property.PropertyType }, query.Expression, Expression.Quote(orderByExp));
                query = query.Provider.CreateQuery<T>(resultExp);
            }
        }
        return db.Set<T>().Where(predicate);
    }
}
时间: 2024-08-13 00:21:42

entity framework 公共类的相关文章

Entity Framework公共的增删改方法

using System; using System.Collections.Generic; using System.Data.Entity; using System.Data.Entity.Infrastructure; namespace My { /// <summary> Entity Framework公共的增删改方法.返回的是受影响的行数 </summary> public class PublicStore { //新增 public static int In

Asp.Net MVC 模型(使用Entity Framework创建模型类) - Part.1

这篇教程的目的是解释在创建ASP.NET MVC应用程序时,如何使用Microsoft Entity Framework来创建数据访问类.这篇教程假设你事先对Microsoft Entity Framework没有任何的了解.读完本篇教程,你将会理解如何使用Entity Framework来选择.插入.更新和删除数据库记录. Microsoft Entity Framework是一个对象关系映射(O/RM)工具,它能你让自动从数据库生成数据访问层.Entity Framework能够使你免于手工

Asp.Net MVC 模型(使用Entity Framework创建模型类)

这篇教程的目的是解释在创建ASP.NET MVC应用程序时,如何使用Microsoft Entity Framework来创建数据访问类.这篇教程假设你事先对Microsoft Entity Framework没有任何的了解.读完本篇教程,你将会理解如何使用Entity Framework来选择.插入.更新和删除数据库记录. Microsoft Entity Framework是一个对象关系映射(O/RM)工具,它能你让自动从数据库生成数据访问层.Entity Framework能够使你免于手工

Entity Framework学习之创建Entity Framework数据模型

1.准备 Visual Studio 2013 .NET 4.5 Entity Framework 6 (EntityFramework 6.1.0 NuGet package) Windows Azure SDK 2.2 (可选) 2.Contoso University web应用程序 此应用程序允许用户 查看.更新student. course和instructor 信息: 网站UI样式是由内置模板生成的 3.新建MVC5 web应用程序 新建项目并命名为"ContosoUniversit

LINQ之路 9:LINQ to SQL 和 Entity Framework(上)

在上一篇中,我们从理论和概念上详细的了解了LINQ的第二种架构“解释查询”.在这接下来的二个篇章中,我们将使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的关键特性.在本系列文章中,我不准备事无巨细的讨论LINQ to SQL和Entity Framework的方方面面,毕竟那样需要太多的篇幅,也会让我们从LINQ上面转移注意力,况且,园子里也有不少介绍LINQ to SQL和Entity Framework的好文章.我们在此关注的是LINQ to S

entity framework 新手入门篇(2)-entity framework基本的增删改查

经过前两节的简单描述,终于可以进入entity framework的使用部分了.本节将对entity framework原生的增删改查进行讲解. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller表. 一.entity framework 相关类的理解. 首先,House数据库在映射后会生成一个名为HouseEntities的类,这个类我们称之为数据上下文,可以简单的理解为数据库的部分映射(如果映射了全部的表,视图,存储过程,则可看作全部映射). 使用数据库的时

Entity Framework 实体框架的形成之旅--数据传输模型DTO和实体模型Entity的分离与联合

在使用Entity Framework 实体框架的时候,我们大多数时候操作的都是实体模型Entity,这个和数据库操作上下文结合,可以利用LINQ等各种方便手段,实现起来非常方便,一切看起来很美好.但是如果考虑使用WCF的时候,可能就会碰到很多相关的陷阱或者错误了.因为实体模型Entity的对象可能包括了其他实体的引用,在WCF里面就无法进行序列化,出现错误:而且基于WCF的时候,可能无法有效利用Express表达式,无法直接使用LINQ等问题都一股脑出现了.本文基于上面的种种问题,阐述了我的整

Asp.Net MVC Entity Framework

Asp.Net MVC 模型(使用Entity Framework创建模型类) - Part.1 这篇教程的目的是解释在创建ASP.NET MVC应用程序时,如何使用Microsoft Entity Framework来创建数据访问类.这篇教程假设你事先对Microsoft Entity Framework没有任何的了解.读完本篇教程,你将会理解如何使用Entity Framework来选择.插入.更新和删除数据库记录. Microsoft Entity Framework是一个对象关系映射(O

推荐一个 可以和 Entity Framework 媲美 的 国人 写的 ORM

https://github.com/2881099/FreeSql 扶摇直上,至强ORM只为自由编码:鹏程万里,至简Linq可使保留黑发:横批:FreeSql(诗人:Coder) 即兴赋诗一首 ----------------------------- 以上是   作者 在 QQ 群 里 发的 原文,,, FreeSql 这个  ORM  (其实 作者 说 也不是 ORM) 从 技术 和 工作量 上来说 是 可以和  Entity Framework  相比 的, 而 它 的 牛逼 之处 在于