using System; using System.Collections.Generic; using System.Text; namespace Apewer.Source { /// <summary>数据库引擎支持 ORM 访问。</summary> public interface IDbClientOrm { /// <summary>初始化指定类型,以创建表或增加字段。</summary> /// <param name="model">要初始化的类型。</param> /// <returns>错误信息。当成功时候返回空字符串。</returns> public string Initialize(Type model); /// <summary>初始化指定类型,以创建表或增加字段。</summary> /// <returns>错误信息。当成功时候返回空字符串。</returns> public string Initialize<T>() where T : class, new(); /// <summary>插入记录。</summary> /// <param name="record">要插入的记录实体。</param> /// <param name="table">插入到指定表。当不指定时,由 record 类型决定。</param> /// <returns>错误信息。当成功时候返回空字符串。</returns> public string Insert(object record, string table = null); /// <summary>更新记录。</summary> /// <param name="record">要插入的记录实体。</param> /// <param name="table">插入到指定表。当不指定时,由 record 类型决定。</param> /// <returns>错误信息。当成功时候返回空字符串。</returns> public string Update(IRecord record, string table = null); /// <summary>获取指定类型的主键,按 Flag 属性筛选。</summary> /// <param name="model">要查询的类型。</param> /// <param name="flag">要求目标记录具有的 Flag 属性,当指定 0 时忽略此要求。</param> public Result<string[]> Keys(Type model, long flag = 0); /// <summary>获取指定类型的主键,按 Flag 属性筛选。</summary> /// <param name="flag">要求目标记录具有的 Flag 属性,当指定 0 时忽略此要求。</param> public Result<string[]> Keys<T>(long flag = 0) where T : class, IRecord, new(); /// <summary>获取具有指定 Key 的记录,并要求记录具有指定的 Flag 属性。</summary> /// <param name="model">目标记录的类型。</param> /// <param name="key">目标记录的主键。</param> /// <param name="flag">要求目标记录具有的 Flag 属性,当指定 0 时忽略此要求。</param> public Result<object> Get(Type model, string key, long flag = 0); /// <summary>获取具有指定 Key 的记录,并要求记录具有指定的 Flag 属性。</summary> /// <param name="key">目标记录的主键。</param> /// <param name="flag">要求目标记录具有的 Flag 属性,当指定 0 时忽略此要求。</param> public Result<T> Get<T>(string key, long flag = 0) where T : class, IRecord, new(); /// <summary>使用指定语句查询,获取查询结果。</summary> /// <param name="model">目标记录的类型。</param> /// <param name="sql">要执行的 SQL 语句。</param> public Result<object[]> Query(Type model, string sql); /// <summary>使用指定语句查询,获取查询结果。</summary> /// <param name="sql">要执行的 SQL 语句。</param> public Result<T[]> Query<T>(string sql) where T : class, new(); /// <summary>查询所有记录。</summary> /// <param name="model">目标记录的类型。</param> /// <param name="flag">要求目标记录具有的 Flag 属性,当指定 0 时忽略此要求。</param> public Result<object[]> Query(Type model, long flag = 0); /// <summary>查询所有记录。</summary> /// <param name="flag">要求目标记录具有的 Flag 属性,当指定 0 时忽略此要求。</param> public Result<T[]> Query<T>(long flag = 0) where T : class, IRecord, new(); } }