# 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; // 数据表的总记录数
```