# Xty.Data.Doc **Repository Path**: cnxiaoby/Xty.Data.Doc ## Basic Information - **Project Name**: Xty.Data.Doc - **Description**: Xty.Data 使用文档 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Xty.Data ## What? Xty.Data 是一个轻量级的 ORM 框架,底层使用 Dapper 读写数据库,提供常用操作方法: 方法 | 说明 | 例子 ---|---|--- ModelObject.DBInsert | 实体类信息插入 | var user = new UserInfo(); user.DBInser(); ModelObject.DBUpdate | 实体类信息更新 | var user = new UserInfo(); user.DBUpdate(); ModelClass.Dao.Delete | 删除 | UserInfo.Dao.Delete(......); ModelClass.Dao.GetInfo | 获取单个实体类 | UserInfo.Dao.GetInfo(......); ModelClass.Dao.GetList | 获取实体类列表 | UserInfo.Dao.GetList(......); ModelClass.Dao.GetAllList | 获取所有列表 | UserInfo.Dao.GetAllList(......); ModelClass.Dao.GetTopList | 获取前N条列表 | UserInfo.Dao.GetTopList(......); ModelClass.Dao.GetPaginationList | 获取分页列表 | UserInfo.Dao.GetPaginationList(......); ModelClass.Dao.GetCacheList | 获取内存缓存列表 | UserInfo.Dao.GetCacheList(......); ModelClass.Dao.ReloadCacheList | 刷新内存缓存列表 | UserInfo.Dao.ReloadCacheList(); ModelClass.Dao.GetValue | 获取字段值 | UserInfo.Dao.GetValue(......); ModelClass.Dao.GetCount | 统计 | UserInfo.Dao.GetCount(......); ModelClass.Dao.SumValue | 求和 | UserInfo.Dao.SumValue(......); ModelClass.Dao.HasValue | 判断是否存在记录 | UserInfo.Dao.HasValue(......); ModelClass.DBWhere | 条件判断语句组装 | UserInfo.DBWhere.Except(......); ModelClass.DBOrderBy | 排序语句组装 | UserInfo.DBOrderBy.DESC(......); ### 代码生成器 - 使用实体类生成器生成 Model 代码; - 对应 T_User 表,生成3个文件的代码及作用说明如下: ``` /// /// UserInfo.cs /// 属性对应数据库表字段,一般不需要手动更改; /// [Table("T_User", "Id")] public class UserInfo : BaseModel { private int _Id; /// /// 主键 /// public int Id { get { return _Id; } set { _Id = value; this.DBCollectionAdd("Id", value); } } private string _Name = string.Empty; /// /// 名称 /// public string Name { get { return _Name; } set { _Name = value; this.DBCollectionAdd("Name", value); } } private string _Password = string.Empty; /// /// 密码 /// public string Password { get { return _Password; } set { _Password = value; this.DBCollectionAdd("Password", value); } } } ``` ``` /// /// UserInfo.Dao.cs /// 数据库操作方法的扩展,自定义的数据逻辑方法都写在这里 /// public class UserDao : DBQuery { // 自定义方法 public class List GetMyMessages(int id) { return MessageInfo.Dao.GetList(m => m.UserId == id); } } ``` ``` /// /// UserInfo.Extra.cs /// 数据库之外的扩展属性、常量 /// partial class UserInfo { public const int SEX_MAN = 1; public const int SEX_WEMEN = 2; // 性别描述 public string SexText { get { if(Sex == SEX_MAN){ return "男"; } else if(Sex == SEX_WEMEN){ return "女"; } else { return "未知"; } } } } ``` ## How? ### ModelObject.DBInsert ``` UserInfo info = new UserInfo(); info.Name = "张三"; info.Password = "123456"; if(info.DBInsert() > 0){ Console.Write("添加成功"); } else{ Console.Write("添加失败"); } ``` ### ModelObject.DBUpdate ``` UserInfo info = new UserInfo(); info.Id = 1; // 主键赋值 info.Password = "654321"; // 修改密码 if(info.DBUpdate() > 0){ Console.Write("修改成功"); } else{ Console.Write("修改失败"); } ``` ### ModelClass.Dao.Delete ``` // 删除主键为 1 的记录 UserInfo.Dao.Delete(1); UserInfo.Dao.Delete("Id=1"); UserInfo.Dao.Delete("where Id=1"); UserInfo.Dao.Delete(m => m.Id == 1); var where = UserInfo.DBWhere; where.Equal(m => m.Id, 1); // or where.Equal("Id", 1); UserInfo.Dao.Delete(where); ``` ### ModelClass.Dao.GetInfo 获取单个实体类 ``` // 获取主键为 1 的记录 UserInfo info = UserInfo.Dao.GetInfo(1); UserInfo info = UserInfo.Dao.GetInfo("Id=1"); UserInfo info = UserInfo.Dao.GetInfo("where Id=1"); UserInfo info = UserInfo.Dao.GetInfo(m => m.Id == 1); var where = UserInfo.DBWhere; where.Equal(m => m.Id, 1); // or where.Equal("Id", 1); UserInfo info = UserInfo.Dao.GetInfo(where); ``` ### ModelClass.Dao.GetList 获取实体类列表 ``` // 获取 Id 不等 1 的记录 var where = UserInfo.DBWhere; where.Except(m => m.Id, 1); // or where.Except("Id", 1); var orderby = UserInfo.DBOrderBy; // 排序 orderby.DESC(m => m.Id); // or where.DESC("Id"); List list = UserInfo.Dao.GetList("where Id<>1"); List list = UserInfo.Dao.GetList("where Id<>1", "order by Id desc"); List list = UserInfo.Dao.GetList(m => m.Id != 1); List list = UserInfo.Dao.GetList(m => m.Id != 1, orderby); List list = UserInfo.Dao.GetList(where); List list = UserInfo.Dao.GetList(where, orderby); ``` ### ModelClass.Dao.GetPaginationList 获取实体类分页列表 ``` var where = UserInfo.DBWhere; where.Except(m => m.Id, 1); // or where.Except("Id", 1); var orderby = UserInfo.DBOrderBy; // 排序 orderby.DESC(m => m.Id); // or where.DESC("Id"); var paging = new Xty.Data.Pagination(); paging.PageIndex = 1; // 页码,从1开始 paging.PageSize= 20; // 每页多少条数据 List list = UserInfo.Dao.GetPaginationList(paging, "where Id<>1", "order by Id desc"); List list = UserInfo.Dao.GetPaginationList(paging, m => m.Id != 1); List list = UserInfo.Dao.GetPaginationList(paging, m => m.Id != 1, orderby); List list = UserInfo.Dao.GetPaginationList(paging, where); List list = UserInfo.Dao.GetPaginationList(paging, where, orderby); var totalSize = paging.TotalSize; // 数据表的总记录数 ```