. 支持成员选择配置,默认选择所有公共字段成员。

选择所有字段成员 参考示例 AutoCSer\Example\OrmModel\InstanceField.cs
忽略成员 参考示例 AutoCSer\Example\OrmModel\IgnoreMember.cs

. 支持默认自增标识,数据列名称必须为 Id,否则需要使用 [AutoCSer.Sql.Member(IsIdentity = true)] 申明为自增标识。

参考示例 AutoCSer\Example\OrmModel\IdentityMember.cs

. 支持多关键字,关键字数据列必须使用 [AutoCSer.Sql.Member(PrimaryKeyIndex = ?)] 申明,同时必须保证实现 IEquatable<T> 接口用于 Hash 应用。
多关键字表格模型会在表格数据模型中生成一个名称为 DataPrimaryKey 的关键字组合 struct 的嵌套类型,默认实现接口 IEquatable<DataPrimaryKey> 用于 Hash 应用。

参考示例 AutoCSer\Example\OrmModel\ManyPrimaryKey.cs

对于存在排序需求的多关键字表格模型,需要添加申明配置 [AutoCSer.Data.PrimaryKey(IsComparable = true)] 并且保证每个关键字数据列都实现 IComparable<T> 接口。
参考示例 AutoCSer\Example\OrmModel\ComparablePrimaryKey.cs

. 数据列默认不允许空值 null,可以通过 [AutoCSer.Sql.Member(IsNull = true)] 申明允许空值 null

参考示例 AutoCSer\Example\OrmModel\NullMember.cs

. 对于最终映射为字符串的数据列,应该设置最大长度避免被用户输入数据攻击。

参考示例 AutoCSer\Example\OrmModel\NullMember.cs

字符串的物理存储默认采用宽字符(一个字符占用两个字节),对于支持字节字符(一个字符只占用一字节)的物理存储在特殊需求下可以使用字节字符减少存储空间。
参考示例 AutoCSer\Example\OrmModel\AsciiMember.cs

. 支持枚举类型,自动映射为数据库支持的整数类型。

参考示例 AutoCSer\Example\OrmModel\EnumMember.cs

. 支持基于强制类型转换的自定义数据类型,必须保证直接映射为当前数据库支持的数据类型。

参考示例 AutoCSer\Example\OrmModel\Member\Ipv4.cs
参考示例 AutoCSer\Example\OrmModel\CastMember.cs

. 对于存在强关联需求的多个数据列,可以使用自定义组合列处理,为了防止循环嵌套问题只支持 struct

参考示例 AutoCSer\Example\OrmModel\Member\Range.cs
参考示例 AutoCSer\Example\OrmModel\CombinationMember.cs

自定义组合列最终将展开映射成多个表格数据列,比如这个 IndexRange 字段将映射为 IndexRange_Start 与 IndexRange_End 两个数据列,每个层级名称之间使用下划线(_)连接,对于自定义组合列数据的更新只能进行整体操作。

. 对于不能识别映射类型的数据列将自动进行 JSON 序列化处理并映射为 string 类型。

参考示例 AutoCSer\Example\OrmModel\JsonMember.cs

. 由于数据库时间类型数据可能存在精度问题(比如 SQL Server 两个不同的时间差有 3ms+),而应用中可能要求每条记录的时间不重复(当然同时也会限制添加数据操作的吞吐,比如 SQL Server 吞吐只能到 200+/s),这时候就不能直接使用 DateTime.Now

表格数据模型 参考示例 AutoCSer\Example\OrmModel\NowTime.cs
数据表格 参考示例 AutoCSer\Example\OrmTable\NowTime.cs

. 对于存在成员位图需求的数据列,可以生成成员索引。

表格数据模型 参考示例 AutoCSer\Example\OrmModel\MemberIndex.cs
数据表格 参考示例 AutoCSer\Example\OrmTable\MemberIndex.cs