CostCalculationItem/IRaCIS.Core.Domain/Common/IRepository/IUnitWork.cs

59 lines
2.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using IRaCIS.Core.Domain.Models;
using System;
using System.Linq;
using System.Linq.Expressions;
namespace IRaCIS.Core.Domain.Interfaces
{
/// <summary>
/// 工作单元接口
/// <para> 适合在一下情况使用:</para>
/// <para>1 在同一事务中进行多表操作</para>
/// <para>2 需要多表联合查询</para>
/// <para>因为架构采用的是EF访问数据库暂时可以不用考虑采用传统Unit Work的注册机制</para>
/// </summary>
public interface IUnitWork
{
T FindSingle<T>(Expression<Func<T, bool>> exp = null) where T : class;
bool IsExist<T>(Expression<Func<T, bool>> exp) where T : class;
IQueryable<T> Find<T>(Expression<Func<T, bool>> exp = null) where T : class;
IQueryable<T> Find<T>(int pageindex = 1, int pagesize = 10, string orderby = "",
Expression<Func<T, bool>> exp = null) where T : class;
int GetCount<T>(Expression<Func<T, bool>> exp = null) where T : class;
void Add<T>(T entity) where T : Entity;
void BatchAdd<T>(T[] entities) where T : Entity;
/// <summary>
/// 更新一个实体的所有属性
/// </summary>
void Update<T>(T entity) where T : class;
void Delete<T>(T entity) where T : class;
/// <summary>
/// 按指定的ID进行批量更新
/// </summary>
void Update<T>(Expression<Func<T, object>> identityExp, T entity) where T : class;
/// <summary>
/// 实现按需要只更新部分更新
/// <para>如Update<T>(u =>u.Id==1,u =>new User{Name="ok"}) where T:class;</para>
/// </summary>
/// <param name="where">更新条件</param>
/// <param name="entity">更新后的实体</param>
void Update<T>(Expression<Func<T, bool>> where, Expression<Func<T, T>> entity) where T : class;
/// <summary>
/// 批量删除
/// </summary>
void Delete<T>(Expression<Func<T, bool>> exp) where T : class;
void Save();
void ExecuteSql(string sql);
}
}