实体定义
连接字符串
InitKeyType 是读取主键和自增列信息的方式,配置不正确ORM更新、插入、根据主键查询等情况就会有找不到主键等错误
SystemTable 从数据库系统表查询,这种需要SA这种高权限账号,对纯MODEL有洁癖的用户适用
Attribute 不受数据库限制通过实体特性读取,如果找不到主键什么的都改用Attribute方式老老实实给实体加特性
InitKeyType.SystemTable定义实体
InitKeyType.Attribute定义实体
2.结构不一样的情况
我们就需要定义别名进来Mapping
InitKeyType.SystemTable
InitKeyType.Attribute
3.动态定义别名
我们可以用Add的方式
db.MappingTables.Add("实体类名称", "数据库表明");
db.MappingColumns.Add("实体类属性名称", "数据库表里面的列名", "实体类名称");
db.IgnoreColumns.Add("实体类属性名称", "实体类名称");
我们还可以用AS
//别名表
db.Queryable<T>().As("tableName").ToList();
//别名列
.Where(it=>SqlFunc.MappingColumn(it.OldName,"NewName") == "jack")
他们之间的优先级:
AS>Add>属性方式
4.自定义实体特性
很多人不想在实体里面添加SqlSugar.dll所以我们也支持了自定义特性支持
实体特性API
表的用法
给实体取真实的表名,一样的时候可以不加该特性
列的用法
多个以逗号格开
1.ColumnName 定义数据库表字段的真实名称,当一样的时候可以不定义该特性
2.IsIgnore 不作数据库操作,true将不会进行查询、添加等操作
3.IsPrimaryKey 标识是否为主键,更新的时候会根据主键值判段更新哪条,当InitKey为Attribute时一定要加该特性不然找不到主 键
4.IsIdentity 是否为自增长
5.ColumnDescription 列描述
6.Length 长度,生成表会用到
7.IsNullable 是否可空,生成表会用到
8.OldColumnName 修改列名,生成表会用到
9.ColumnDataType 自定义生成的数据类型,生成表会用到