SplitError 的问题 返回

SqlSugar
9 74

向数据库插入数据的时候,要验证“除了自己”以外,没有其他“硅片代码”重复的数据

代码如下:

var x = db.DataBase.Storageable(entity)

                    .SplitError(info => info.Any(), "硅片代码重复")

                    .WhereColumns(item => item.SILICON_SHORT_CODE)

                    .ToStorage();

                if (x.ErrorList.Count > 0)

                {

                    throw new Exception(x.ErrorList[0].StorageMessage);

                }

但是这样写,并没有实现“除了自己”,请问如何实现“除了自己”?

热忱回答9

  • 还少了个  .SplitInsert(x=>true)  吧 不然怎么插入

    0 回复
  • @fate sta:这个splitinsert不太会用,我看文档的意思是集合里有10条数据,5条可以insert就insert5条,我的需求是有1条不合格,就全不插入,所以在后面用的saveable,前面只是用storageable对数据验证一下。所以插入暂时不关心,我关心的是怎么验证 “除了自己”这个功能

    0 回复
  • 我的需求是:

    1. 第一次插入 id=1,name=a,正常插入

    2. 第二次如果插入 id= 2,name=a,就验证name重复了,不允许插入,但是如果 第二次插入的是 id =1,name =a ,就是修改第一条数据

      我现在这样写,第二次插入 id =1,name = a的时候,会验证出和第一次插入的name重复,但其实这俩是同一条数据,我不希望被验证,而是要修改

    0 回复
  • @老蛮腰list本身是否存在重复,传给ORM前需要自先过滤重复

    0 回复
  • var x=db.Storageable(list)
                    .SplitError(it => it.Any(), "名称已存在")
                    .SplitInsert(it => true)
                    .WhereColumns(it => it.Name)//这里用name作为数据库查找条件
                    .ToStorage()
        x.AsInsertable.ExecuteCommand();//插入可插入部分
        if(x.ErrorList.Any())//输出所有错误部分
         {
           foreach (var item in x.ErrorList)
          {
            Console.WriteLine(item.StorageMessage);
          }
         }

    如果按这个写还有问题就需要写供一个DEMO


    0 回复
  • DEMO模版 :https://www.donet5.com/Home/Doc?typeId=2366

    0 回复
  • @fate sta:我说的是插入数据库,另外我直接用的对象实体,不是list,或者说list里,只有一条数据,list本身不存在重复,我要判断是否与数据库中重复,你给的示例代码跟我写的那个不是一样的么

    0 回复
  • 我的需求就是 :传进来的数据 与 数据库中的数据比较,id不同的时候,才验证name

    0 回复
  • 搞定了,在any里加条件就行

     var x = db.DataBase.Storageable(entity)

                        .SplitError(info => info.Any(y=>y.ID != entity.ID), "硅片代码重复")

                        .WhereColumns(item => item.SILICON_SHORT_CODE)

                        .ToStorage();

    或者 

    var x = db.DataBase.Storageable(entity)

                        .SplitError(info => info.Any(y=>y.ID !=  info.Item.ID), "硅片代码重复")

                        .WhereColumns(item => item.SILICON_SHORT_CODE)

                        .ToStorage();


    0 回复