FreeSql
FreeSql copied to clipboard
CodeFirst时能不能加入DefaultValue?
CodeFirst时能不能加入DefaultValue,有些数据库是可以有字段默认值的,这样就不需要再设置InsertValueSql了
想做,两次都撤回了,DefaultValue 在 CodeFirst 迁移时比较困难,主要几个数据库不一样。
所以用 InsertValueSql 或者 public DateTime time {get;set;} = DateTime.UtcNow 解决插入问题。
也可以用 fsql.Insert(item).IgnoreColumns(a => a.Time).ExecuteAffrows(); 解决
InsertValueSql 可能是有问题的,今天简单用了一下 [JsonProperty, Column(DbType = "TEXT", IsNullable = false, InsertValueSql = "")] public string Name { get; set; }
[JsonProperty, Column(DbType ="INT", IsNullable = false, InsertValueSql = "1")]
public int Vol { get; set; }
fsql.Insert(new T_Info() { Name=nitem.name, Vol=nitem.vol}).ExecuteAffrowsAsync();
这种情况下Name是用户数据,Vol始终是1,也就是InsertValueSql 的值 ,实际应该是nitem.vol传的值,调试看了一下nitem.vol是有值的
InsertValueSql 不考虑外界是否有值,应该不适合你的场景
我也是这么认为的,但是DbType =Text的时候,是考虑了外界值的