实体定义

连接字符串

实体定义 - 图1

InitKeyType 是读取主键和自增列信息的方式,配置不正确ORM更新、插入、根据主键查询等情况就会有找不到主键等错误

SystemTable 从数据库系统表查询,这种需要SA这种高权限账号,对纯MODEL有洁癖的用户适用

Attribute 不受数据库限制通过实体特性读取,如果找不到主键什么的都改用Attribute方式老老实实给实体加特性

InitKeyType.SystemTable定义实体

实体定义 - 图2

InitKeyType.Attribute定义实体

实体定义 - 图3

2.结构不一样的情况

我们就需要定义别名进来Mapping

InitKeyType.SystemTable

实体定义 - 图4

InitKeyType.Attribute

实体定义 - 图5

3.动态定义别名

我们可以用Add的方式

  1. db.MappingTables.Add("实体类名称", "数据库表明");
  2. db.MappingColumns.Add("实体类属性名称", "数据库表里面的列名", "实体类名称");
  3. db.IgnoreColumns.Add("实体类属性名称", "实体类名称");

我们还可以用AS

  1. //别名表
  2. db.Queryable<T>().As("tableName").ToList();
  3. //别名列
  4. .Where(it=>SqlFunc.MappingColumn(it.OldName,"NewName") == "jack")

他们之间的优先级:

AS>Add>属性方式

4.自定义实体特性

很多人不想在实体里面添加SqlSugar.dll所以我们也支持了自定义特性支持

实体定义 - 图6

实体特性API

表的用法

给实体取真实的表名,一样的时候可以不加该特性

实体定义 - 图7

列的用法

多个以逗号格开

实体定义 - 图8

1.ColumnName 定义数据库表字段的真实名称,当一样的时候可以不定义该特性

2.IsIgnore 不作数据库操作,true将不会进行查询、添加等操作

3.IsPrimaryKey 标识是否为主键,更新的时候会根据主键值判段更新哪条,当InitKey为Attribute时一定要加该特性不然找不到主 键

4.IsIdentity 是否为自增长

5.ColumnDescription 列描述

6.Length 长度,生成表会用到

7.IsNullable 是否可空,生成表会用到

8.OldColumnName 修改列名,生成表会用到

9.ColumnDataType 自定义生成的数据类型,生成表会用到