#region RDIFramework.NET-generated
//------------------------------------------------------------------------------
//     RDIFramework.NET（.NET快速信息化系统开发、整合框架）是基于.NET的快速信息化系统开发、整合框架，给用户和开发者最佳的.Net框架部署方案。
//     RDIFramework.NET平台包含基础公共类库、强大的权限控制、模块分配、数据字典、自动升级、各商业级控件库、工作流平台、代码生成器、开发辅助
//工具等，应用系统的各个业务功能子系统，在系统体系结构设计的过程中被设计成各个原子功能模块，各个子功能模块按照业务功能组织成单独的程序集文
//件，各子系统开发完成后，由RDIFramework.NET平台进行统一的集成部署。
//
//	框架官网：http://www.rdiframework.net/
//	框架博客：http://blog.rdiframework.net/
//	交流QQ：406590790 
//	邮件交流：406590790@qq.com
//	其他博客：
//    http://www.cnblogs.com/huyong 
//    http://blog.csdn.net/chinahuyong
//------------------------------------------------------------------------------
// <auto-generated>
//     此代码由RDIFramework.NET平台代码生成工具自动生成。
//     运行时版本:4.0.30319.1
//
//     对此文件的更改可能会导致不正确的行为，并且如果
//     重新生成代码，这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
#endregion

using System.Data;
using System.ServiceModel;
using System.Collections.Generic;

namespace #Project#.BizLogic
{
	using RDIFramework.Utilities;

	/// <summary>
	/// I#ClassName#Service
	/// #Description#服务层接口
	/// 
	/// 修改记录
	/// 
	///	#DateCreated# 版本：1.0 #Author# 创建文件。
	///		
	/// 版本：1.0
	///
	/// <author>
	///	<name>#Author#</name>
	///	<date>#DateCreated#</date>
	/// </author> 
	/// </summary>
	[ServiceContract]
	public interface I#ClassName#Service
	{
		/// <summary>
		/// 新增#Description#
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <param name="entity">实体</param>
		/// <param name="statusCode">返回状态</param>
		/// <param name="statusMessage">返回状态信息</param>
		/// <returns>主键</returns>
		[OperationContract]
		string Add(UserInfo userInfo, #ClassName#Entity entity, out string statusCode, out string statusMessage);

		/// <summary>
		/// 更新#Description#
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <param name="entity">#Description#实体</param>
		/// <param name="statusCode">返回状态码</param>
		/// <param name="statusMessage">返回状态信息</param>
		/// <returns>影响行数</returns>
		[OperationContract]
		int Update(UserInfo userInfo, #ClassName#Entity entity, out string statusCode, out string statusMessage);

		/// <summary>
		/// 获取#Description#列表
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <returns>数据表</returns>
		[OperationContract]
		DataTable GetDT(UserInfo userInfo);

		/// <summary>
		/// 分页获取#Description#列表
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <param name="searchValue">查询关键字</param>
		/// <param name="recordCount">返回记录数</param>
		/// <param name="pageIndex">当前页</param>
		/// <param name="pageSize">每页显示条数</param>
		/// <param name="sortExpression">排序字段</param>
		/// <returns>数据表</returns>
		[OperationContract]
		DataTable GetDTByPage(UserInfo userInfo, string searchValue, out int recordCount, int pageIndex, int pageSize, string sortExpression);
		
		/// <summary>
		/// 得到#Description#实体
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <param name="id">主键</param>
		/// <returns>实体</returns>
		[OperationContract]
		#ClassName#Entity GetEntity(UserInfo userInfo, string id);		
	
		/// <summary>
		/// 根据主键获取数据
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <param name="ids">主键</param>
		/// <returns>数据表</returns>
		[OperationContract]
		DataTable GetDTByIds(UserInfo userInfo, string[] ids);
		
		/// <summary>
		/// 根据条件获取数据
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <param name="parameters">参数</param>		
		/// <returns>数据表</returns>
		[OperationContract]
		DataTable GetDTByValues(UserInfo userInfo,  List<KeyValuePair<string, object>> parameters);
				
		/// <summary>
		/// 批量保存数据
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <param name="entites">#Description#实体列表</param>
		/// <returns>影响行数</returns>
		[OperationContract]
		int BatchSave(UserInfo userInfo, List<#ClassName#Entity> entites);
				
		/// <summary>
		/// 删除指定数据
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <param name="id">主键</param>
		/// <returns>数据表</returns>
		[OperationContract]
		int Delete(UserInfo userInfo, string id);
		
		/// <summary>
		/// 批量删除
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <param name="ids">主键数组</param>
		/// <returns>影响行数</returns>
		[OperationContract]
		int BatchDelete(UserInfo userInfo, string[] ids);

		/// <summary>
		/// 批量设置删除标志
		/// </summary>
		/// <param name="userInfo">用户</param>
		/// <param name="ids">主键数组</param>
		/// <returns>影响行数</returns>
		[OperationContract]
		int SetDeleted(UserInfo userInfo, string[] ids);
	}
}