字符串被sugar强制转成objectId存入mongo 返回

SqlSugar 沟通中
14 198

将数据插入到mongo的时候会自动将数字字母组成的长度为24的字符串转换成objectId,如何避免这种自动转换

热忱回答14

  • 长度为24的字符串 应该本身就是objectId吧。

    0 回复
  • 格式发出来看一下。

    0 回复
  • 00b07a14e40b3cd0080007f2字符串,就是这样的,然后自动把所有大写字母转小写字母,并且转成了objectId ,实体字段是这样的  public string EPC { get; set; } = string.Empty;

    0 回复
  • 这个字段就是一个单纯的字符串,不想要自动大写转小写,也不需要存储成objectId,单纯就是一个字符串

    0 回复
  • 多几个字符少几个字符又自动切回string类型,这就导致一个集合同一个字段,插入的数据可能是string类型也可能是object Id类型

    0 回复
  • 我想想办法

    0 回复
  • MongoDbConfig.NoObjectIdFunc = it => it.StartsWith("00");//为true就会排除掉他是objectId
    
    
    var isfalse=SqlSugar.MongoDb.UtilMethods.IsValidObjectId("00b07a14e40b3cd0080007f2");

    升经到这个  SqlSugar.MongoDbCore 5.1.4.276  这个版本。可以全局排除。

    需要注意: 不能把数据库真的OBJECTID排除掉 ,需你自个根据规律处理

     


    0 回复
  • 字符串没规律的,就是字母数字自由组成,我举例只是其中一个可能。没办法不自动转换吗,我Colunm只有声明是objectId的时候才是objectId否则就是原模原样单纯的string,能做到这样吗?

    0 回复
  • 只要是string就有可能自动转换,一个字段真的就是都是string突然来个objectId...

    0 回复
  • @八两的QQ号:那你就看数据库面存储的规律,不是数据里里面的规律就排除。

    0 回复
  •  //sqlerver : FOR XML PATH
     //mysql sqlite : group_concat
     //oracle : listagg
     //pgsql  :string_agg
     var list= db.Queryable<Order>()
       .Select(it => new
                
                 //names="名字1,名字2,名字3"
                  names=SqlFunc.Subqueryable<custom>().
                                   Where(z=>z.oid==it.id)
                                   .SelectStringJoin(z => z.Name, ",")
                })
               .ToList();
                
    //多字段 不能有null相加 , 字段有null需要加上 z.Name??""
    .SelectStringJoin(z => SqlFunc.MergeString(z.Name,"-",z.Id.ToString()), ",")
     
     
    //去重复
    .SelectStringJoin(it=>SqlFunc.MappingColumn<string>($"distinct {it.UserId}"),".")


    0 回复
  • MongoDbConfig.NoObjectIdFunc这东西能获取到字段名吗?字段名不包含ID的全都按照字符串去处理?

    0 回复
  • [SugarColumn(SqlParameterDbType=typeof(CommonPropertyConvert))]//CommonPropertyConvertORM自带的 
    public string DcValue { getset; } 

    你看看加个这个转换行不行。


    0 回复
  • 不行,没用,就是会自动转换

    0 回复