EF Core Code First映射
1、枚举类型映射
枚举对应数据库中的类型为TINYINT,TINYINT对应C#中的byte。所以在定义枚举时记得将其继承自byte,如:
public enum Type : byte { [Description("普通")] General = 0, [Description("保险")] Insurance = 1 }
2、默认值设置
一个是HasDefaultValue,一个是HasDefaultValueSql,总结起来就一句话:对于C#中的类型和数据库类型一致的话用HasDefaultValue,否则请用HasDefaluValueSql。
默认时间的设置,会设置成精确的日期类型即datetime2(7)。如果想映射成datetime且给定默认时间为当前时间,需要手动设置: b.Property(p => p.CreatedTime) .HasColumnType("DATETIME") .HasDefaultValueSql("GETDATE()");
3、计算列
之前版本为ForSqlServerHasComputedColumnSql,目前是HasComputedColumnSql。例如
b.Property(p => p.Name) .IsRequired() .HasComputedColumnSql("((N'Cnblogs'+CONVERT([CHAR](8),[CreatedTime],(112)))+RIGHT(REPLICATE(N'0',(6))+CONVERT([NVARCHAR],[Id],(0)),(6)))");
结果是生成一个Name字段,由字符串“Cnblogs”加上CreateTime字段和ID组合而成。
其它参考https://blog.csdn.net/chiasing/article/details/81349104