Bug反馈,如果可以请尽快修复它 返回

C#论坛 老数据
10 1711

bug表结构

/*
 Navicat Premium Data Transfer

 Source Server         : EHS DEV
 Source Server Type    : MySQL
 Source Server Version : 50720
 Source Host           : 172.20.1.205:3306
 Source Schema         : xdb_forkliftbonus

 Target Server Type    : MySQL
 Target Server Version : 50720
 File Encoding         : 65001

 Date: 22/01/2021 00:53:35
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for tb_aa009_serial_number
-- ----------------------------
DROP TABLE IF EXISTS `tb_aa009_serial_number`;
CREATE TABLE `tb_aa009_serial_number`  (
  `NoID` varchar(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `NoValue` int(11) NOT NULL,
  `NoRemark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `CreateID` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `UpdateTime` datetime(0) NOT NULL,
  PRIMARY KEY (`NoID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '自動生成不重複序列ID' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of tb_aa009_serial_number
-- ----------------------------
INSERT INTO `tb_aa009_serial_number` VALUES ('EHSAA', 346, '待處理', '', '2018-08-09 03:38:24');
INSERT INTO `tb_aa009_serial_number` VALUES ('EHSAB', 1314, '待處理', '', '2018-08-18 06:19:04');
INSERT INTO `tb_aa009_serial_number` VALUES ('EHSAC', 163, '待處理', '', '2018-08-18 06:19:04');
INSERT INTO `tb_aa009_serial_number` VALUES ('EHSAD', 1109, '調倉ID', '', '2018-09-16 23:09:00');
INSERT INTO `tb_aa009_serial_number` VALUES ('ISAA', 40, '權限ID', 'aa68cf34-0b25-4c35-a69e-5ede047e2249', '2017-10-04 21:49:35');
INSERT INTO `tb_aa009_serial_number` VALUES ('ISAB', 10, '角色ID', 'aa68cf34-0b25-4c35-a69e-5ede047e2249', '2017-08-15 23:39:29');
INSERT INTO `tb_aa009_serial_number` VALUES ('ISAC', 1224, '上傳圖片ID', 'aa68cf34-0b25-4c35-a69e-5ede047e2249', '2018-08-06 22:14:00');
INSERT INTO `tb_aa009_serial_number` VALUES ('ISAD', 147, '異常ID', 'aa68cf34-0b25-4c35-a69e-5ede047e2249', '2018-08-01 19:42:00');
INSERT INTO `tb_aa009_serial_number` VALUES ('ISAE', 78, '操作失誤ID', 'aa68cf34-0b25-4c35-a69e-5ede047e2249', '2018-08-21 18:43:00');
INSERT INTO `tb_aa009_serial_number` VALUES ('Y1P0', 511, '用戶ID', 'aa68cf34-0b25-4c35-a69e-5ede047e2249', '2018-08-01 19:42:00');

SET FOREIGN_KEY_CHECKS = 1;

以下为问题测试代码

var insertResult = await _bllTbAa009SerialNumber.InsertUpdateListTask(new List<tb_aa009_serial_number_Result>
            {
                new tb_aa009_serial_number_Result
                {
                    NoID="TEST",
                    NoRemark="Test",
                    CreateID="",
                    NoValue=0,
                    UpdateTime=DateTime.MinValue
                }
            });

请注意方法名都一样 , 测试参数也一样  ,  就是方法下面的代码有差别 , 可以正常 Insertable , 但是不能Saveable , 注意两次测试都是清理了上一次操作后的结果后进行的

能够insert的代码

public async Task<bool> InsertUpdateListTask(List<tb_aa009_serial_number_Result> inList, string OperationID = "")
        {
            var inSqlList = inList.ResultListToInList();

            return await DbAsync.Insertable<tb_aa009_serial_number>(inSqlList).RemoveDataCache().ExecuteCommandAsync() > 0;
        }

不能够Saveable 的代码

public async Task<bool> InsertUpdateListTask(List<tb_aa009_serial_number_Result> inList, string OperationID = "")
        {
            var inSqlList = inList.ResultListToInList();

            return await DbAsync.Saveable<tb_aa009_serial_number>(inSqlList).RemoveDataCache().ExecuteCommandAsync() > 0;
        }

以下为不能Saveable的代码所报的错误

 SqlSugar.SqlSugarException : Need primary key


热忱回答10

  • 请注意是mysql数据库 .

    0 回复
  • Need primary key 这个错不是很明显了吗,需要主键

    0 回复
  • @fate stay night:请注意我的sql文件结构哦。

    PRIMARY KEY (`NoID`) USING BTREE

    0 回复
  • @Aaron 傲:实体配置成功了吗

    0 回复
  • 用initkey.attribute 并且实体设置主键

    0 回复
  • @fate stay night:明天我再试试吧.  

    0 回复
  • @fate stay night:比较有意思 , 我按照你这样设置后就可以了 , 但是我并不想每个表都这样子设置,每个实体都添加特征 ,  实际上,  我给你看的那份Sql文件 , 是从数据库导出出来的 , 所以数据库肯定是设置了一个主键的 .

    目前我数据库的变动都是通过DbUp来更新的 , sqlsugar的那个生成数据表是不能满足我的需求的 . 

    不过我其他的表使用Saveable  , 没有进行这样的配置 , 并不会出现主键检查不到的问题,  我也没有在任何实体上面配置

    [SugarColumn(IsPrimaryKey = true)]

    如果可以还麻烦帮手看看是不是触到了什么关键字 , 不然我每个实体都要修改一次 . 挺棘手的. 


    0 回复
  • @fate stay night:经过测试可以不配置

     InitKeyType = InitKeyType.Attribute

    但是如果想使用Saveable , 就一定要配置

    [SugarColumn(IsPrimaryKey = true)]

    经过检查我前几张使用Saveable成功的表,  也是配置了

    [SugarColumn(IsPrimaryKey = true)]

    想知道这是不是正常 ? 

    0 回复
  • 肯定要配置主键

    0 回复
  • 或者wherecolumn

    0 回复