Entity Framework Code First 常用方法集成

using System;

using System.Collections.Generic;

using System.Data.Entity;

using System.Linq;

using System.Linq.Expressions;

using System.Text;

using SnsDB;

using EntityFramework.Extensions;

using EntityFramework.Reflection;

using System.Data.SqlClient;

using System.Transactions;



namespace SnsDAL

{

    public partial class Repository

    {

        /// <summary>

        /// 创建一条记录

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="model"></param>

        /// <returns></returns>

        public int Create<T>(T model) where T : class

        {

            int Result = 0;

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                db.Set<T>().Add(model);

                db.Configuration.ValidateOnSaveEnabled = false;

                Result = db.SaveChanges();

                db.Configuration.ValidateOnSaveEnabled = true;

                return Result;

            }

        }



        /// <summary>

        /// 根据主键修改实体的全部信息

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="model"></param>

        /// <returns></returns>

        public int Update<T>(T model) where T : class

        {

            int Result = 0;

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                if (db.Entry<T>(model).State == EntityState.Detached)

                {

                    db.Set<T>().Attach(model);

                    db.Entry<T>(model).State = EntityState.Modified;

                }

                db.Configuration.ValidateOnSaveEnabled = false;

                Result = db.SaveChanges();

                db.Configuration.ValidateOnSaveEnabled = true;

                return Result;

            }

        }



        /// <summary>

        /// 只删除一条记录

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="ids"></param>

        public int Delete<T>(Expression<Func<T, bool>> express) where T : class

        {

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                T model = db.Set<T>().SingleOrDefault(express);

                db.Set<T>().Remove(model);

                return db.SaveChanges();

            }

        }



        /// <summary>

        /// 根据条件获取一个实体

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="express"></param>

        /// <returns></returns>

        public T GetModel<T>(Expression<Func<T, bool>> express) where T : class

        {

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                T model = db.Set<T>().SingleOrDefault(express);

                return model;

            }

        }



        /// <summary>

        /// 根据条件获取列表

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="express"></param>

        /// <returns></returns>

        public IEnumerable<T> GetList<T>(Expression<Func<T, bool>> express) where T : class

        {

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                return db.Set<T>().Where(express).ToList();

            }

        }



        /// <summary>

        /// 获取列表

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <returns></returns>

        public IEnumerable<T> GetList<T>() where T : class

        {

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                return db.Set<T>().ToList();

            }

        }



        /// <summary>

        /// 批量删除

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="express"></param>

        /// <returns></returns>

        public int DeleteRange<T>(Expression<Func<T, bool>> express) where T : class

        {

            int Result = 0;

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                db.Set<T>().Where(express).Delete();

                db.Configuration.ValidateOnSaveEnabled = false;

                Result = db.SaveChanges();

                db.Configuration.ValidateOnSaveEnabled = true;

            }

            return Result;

        }



        /// <summary>

        /// 批量添加

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="List"></param>

        /// <returns></returns>

        public int AddRange<T>(IList<T> List) where T : class

        {

            int Result = 0;

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                db.Set<T>().AddRange(List);

                db.Configuration.ValidateOnSaveEnabled = false;

                Result = db.SaveChanges();

                db.Configuration.ValidateOnSaveEnabled = true;

            }

            return Result;

        }



        /// <summary>

        /// 批量修改  例:xx.update(p=>p.id==1,p=>new xx{p.name="修改"});

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="where">条件</param>

        /// <param name="updateExpression">修改的内容</param>

        /// <returns></returns>

        public int UpdateRange<T>(Expression<Func<T, bool>> where, Expression<Func<T, T>> updateExpression) where T : class

        {

            int Result = 0;

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                using (TransactionScope Transaction = new TransactionScope())

                {

                    db.Configuration.ValidateOnSaveEnabled = false;

                    db.Set<T>().Update(where, updateExpression);

                    db.Configuration.ValidateOnSaveEnabled = true;

                    Transaction.Complete();

                    Result = 1;

                }

            }

            return Result;

        }





        /// <summary>

        /// 执行一条sql返回list

        /// </summary>

        /// <typeparam name="T">一般为ViewModel</typeparam>

        /// <param name="strsql"></param>

        /// <returns></returns>

        public IEnumerable<T> GetList<T>(string strsql) where T:class

        {

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                return db.Database.SqlQuery<T>(strsql);

            }

        }



        /// <summary>

        /// 执行一条sql返回list

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="strsql">一般为ViewModel</param>

        /// <param name="paras">参数</param>

        /// <returns></returns>

        public IEnumerable<T> GetList<T>(string strsql, SqlParameter[] paras) where T : class

        {

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                return db.Database.SqlQuery<T>(strsql, paras);

            }

        }



        /// <summary>

        /// 执行一条sql返回一个对象

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="strsql"></param>

        /// <returns></returns>

        public T GetList<T>(string strsql) where T : class

        {

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                return db.Database.SqlQuery<T>(strsql).Cast<T>().First();

            }

        }



        /// <summary>

        /// 执行一条sql返回一个对象

        /// </summary>

        /// <typeparam name="T"></typeparam>

        /// <param name="strsql"></param>

        /// <param name="paras">参数</param>

        /// <returns></returns>

        public T GetList<T>(string strsql,SqlParameter[] paras) where T : class

        {

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                return db.Database.SqlQuery<T>(strsql,paras).Cast<T>().First();

            }

        }



        /// <summary>

        /// 执行一条sql,一般为添加或修改或删除操作

        /// </summary>

        /// <param name="strsql"></param>

        /// <returns>受影响的行数</returns>

        public int ExecuteSqlCommand(string strsql)

        {

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                return db.Database.ExecuteSqlCommand(strsql);

            }

        }



        /// <summary>

        /// 执行一条sql,一般为添加或修改或删除操作

        /// </summary>

        /// <param name="strsql"></param>

        /// <param name="paras">参数</param>

        /// <returns></returns>

        public int ExecuteSqlCommand(string strsql,SqlParameter[] paras)

        {

            using (SnsDB_Intermodal db = new SnsDB_Intermodal())

            {

                return db.Database.ExecuteSqlCommand(strsql,paras);

            }

        }

    }

}

  小人技术不才,以上仅提供参考。还希望大神多多指点。
    
      再次推荐一个  ASP.NET MVC群   171560784   
       
     

 

你可能感兴趣的:(framework)