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);
}
}
}
}
|