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