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