Set<T>().Any() : Set<T>().Any(predicate);
}
/// <summary>
/// 根据id获取记录
/// </summary>
/// <returns>记录</returns>
/// <param name="id">id.</param>
public T GetByKeyId<T>(object id)
where T : ModelBase
{
ValidateOperator.Begin().NotNull(id, "Id");
return Set<T>().Find(id);
}
/// <summary>
/// 条件获取记录集合
/// </summary>
/// <returns>集合</returns>
/// <param name="predicate">筛选条件.</param>
public List<T> GetList<T>(Expression<Func<T, bool>> predicate = null)
where T : ModelBase
{
IQueryable<T> query = Set<T>();
if (predicate != null) query = query.Where(predicate);
return query.ToList();
}
/// <summary>
/// 条件获取记录第一条或者默认
/// </summary>
/// <returns>记录</returns>
/// <param name="predicate">筛选条件.</param>
public T GetFirstOrDefault<T>(Expression<Func<T, bool>> predicate = null)
where T : ModelBase
{
IQueryable<T> query = Set<T>();
if (predicate != null)
return query.FirstOrDefault(predicate);
return query.FirstOrDefault();
}
/// <summary>
/// 条件查询
/// </summary>
/// <returns>IQueryable</returns>
/// <param name="predicate">筛选条件.</param>
public IQueryable<T> Query<T>(Expression<Func<T, bool>> predicate = null)
where T : ModelBase
{
IQueryable<T> query = Set<T>();
if (predicate != null) query = query.Where(predicate);
return query;
}
/// <summary>
/// 显式回滚事务,仅在显式开启事务后有用
/// </summary>
public void Rollback()
{
if (TransactionEnabled) Database.CurrentTransaction.Rollback();
}
/// <summary>
/// 执行Sql 脚本查询
/// </summary>
/// <param name="sql">Sql语句</param>
/// <param name="parameters">参数</param>
/// <returns>集合</returns>
public IEnumerable<T> SqlQuery<T>(string sql, IDbDataParameter[] parameters)
{
ValidateOperator.Begin()
.NotNullOrEmpty(sql, "Sql语句");
// ReSharper disable once CoVariantArrayConversion
return Database.SqlQuery<T>(sql, parameters);
}
/// <summary>
/// 根据记录
/// </summary>
/// <returns>操作是否成功.</returns>
/// <param name="entity">实体类记录.</param>
public bool Update<T>(T entity)
where T : ModelBase
{
ValidateOperator.Begin().NotNull(entity, "需要更新的数据记录");
bool result;
try
{
var set = Set<T>();
set.Attach(entity);
Entry(entity).State = EntityState.Modified;
result = SaveChanges() > 0;
}
catch (DbEntityValidationException dbEx)
{
throw new Exception(dbEx.GetFullErrorText(), dbEx);
}
return result;
}
#endregion Methods
}
单元测试
[TestClass()]
public class SampleServiceTests
{
private IKernel _kernel;
private ISampleService _sampleService;
private readonly Guid _testId = "2F6D3C43-C2C7-4398-AD2B-ED5E82D79999".ToGuidOrDefault(Guid.Empty);
private const string TestName = "EFSample";
[TestInitialize]
public void SetUp()
{
_kernel = new StandardKernel(new ServiceModule());
Assert.IsNotNull(_kernel);
_sampleS
|