FreeSql icon indicating copy to clipboard operation
FreeSql copied to clipboard

CodeFirst时能不能加入DefaultValue?

Open hanxiao123 opened this issue 2 years ago • 5 comments

CodeFirst时能不能加入DefaultValue,有些数据库是可以有字段默认值的,这样就不需要再设置InsertValueSql了

hanxiao123 avatar Sep 14 '22 09:09 hanxiao123

想做,两次都撤回了,DefaultValue 在 CodeFirst 迁移时比较困难,主要几个数据库不一样。

2881099 avatar Sep 15 '22 04:09 2881099

所以用 InsertValueSql 或者 public DateTime time {get;set;} = DateTime.UtcNow 解决插入问题。

也可以用 fsql.Insert(item).IgnoreColumns(a => a.Time).ExecuteAffrows(); 解决

2881099 avatar Sep 15 '22 04:09 2881099

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是有值的

hanxiao123 avatar Sep 16 '22 08:09 hanxiao123

InsertValueSql 不考虑外界是否有值,应该不适合你的场景

2881099 avatar Sep 16 '22 08:09 2881099

我也是这么认为的,但是DbType =Text的时候,是考虑了外界值的

hanxiao123 avatar Sep 20 '22 00:09 hanxiao123