为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:Window
【CPU】:
【问题描述】*:
1.ORM EFCore5
2.DM8 配置项 COMPATIBLE_MODE = 3 兼容sql serve 写法,在执行ef Core .addrange 生成的语句会报错【标示符长度非法】,语句如图!,如果 COMPATIBLE_MODE = 0 改为 0不建通,EF TO SQL 生成的语句针对拼接字符串是以"+"号拼接而成的,DM8本身语法不支持用“+”号拼接字符串,求解决方案!,有遇到过同样的问题吗 image.png
具体脚本如下:
BEGIN
DECLARE TYPE rrr0 IS RECORD ("LanguageId" INT, "StringResourceGuid" VARCHAR(36), "StringResourceId" INT, "TranslatedString" NVARCHAR2(500), "_Position" int);
TYPE ccc0 IS ARRAY rrr0[];
c0 ccc0;
"V_Id" INT;
BEGIN
c0 = NEW rrr0[4];
c0[1]."LanguageId" = :p2 ;
c0[1]."StringResourceGuid" = :p3 ;
c0[1]."StringResourceId" = :p4 ;
c0[1]."TranslatedString" = :p5 ;
c0[1]."_Position" = 0;
c0[2]."LanguageId" = :p6 ;
c0[2]."StringResourceGuid" = :p7 ;
c0[2]."StringResourceId" = :p8 ;
c0[2]."TranslatedString" = :p9 ;
c0[2]."_Position" = 1;
c0[3]."LanguageId" = :p10 ;
c0[3]."StringResourceGuid" = :p11 ;
c0[3]."StringResourceId" = :p12 ;
c0[3]."TranslatedString" = :p13 ;
c0[3]."_Position" = 2;
c0[4]."LanguageId" = :p14 ;
c0[4]."StringResourceGuid" = :p15 ;
c0[4]."StringResourceId" = :p16 ;
c0[4]."TranslatedString" = :p17 ;
c0[4]."_Position" = 3;
SELECT MAX("Id") INTO "V_Id" FROM "sStringResourceDefaultItem";
INSERT INTO "sStringResourceDefaultItem" ("LanguageId", "StringResourceGuid", "StringResourceId", "TranslatedString")SELECT "LanguageId", "StringResourceGuid", "StringResourceId", "TranslatedString" FROM ARRAY C0;
SELECT "t"."Id" FROM "sStringResourceDefaultItem" "t"
WHERE EXISTS(SELECT * FROM ARRAY c0 "i" WHERE ("t"."LanguageId" = "i"."LanguageId" OR ("t"."LanguageId" IS NULL AND "i"."LanguageId" IS NULL )) AND ("t"."StringResourceGuid" = "i"."StringResourceGuid" OR ("t"."StringResourceGuid" IS NULL AND "i"."StringResourceGuid" IS NULL )) AND ("t"."StringResourceId" = "i"."StringResourceId" OR ("t"."StringResourceId" IS NULL AND "i"."StringResourceId" IS NULL )) AND (TEXT_EQUAL("t"."TranslatedString", "i"."TranslatedString") OR ("t"."TranslatedString" IS NULL AND "i"."TranslatedString" IS NULL )) ) AND ( "t"."Id" > "V_Id" OR "V_Id" IS NULL)
ORDER BY "t"."ROWID";
END;
DECLARE TYPE rrr4 IS RECORD ("LanguageId" INT, "StringResourceGuid" VARCHAR(36), "StringResourceId" INT, "TranslatedString" NVARCHAR2(500), "_Position" int);
TYPE ccc4 IS ARRAY rrr4[];
c4 ccc4;
"V_Id" INT;
BEGIN
c4 = NEW rrr4[4];
c4[1]."LanguageId" = :p18 ;
c4[1]."StringResourceGuid" = :p19 ;
c4[1]."StringResourceId" = :p20 ;
c4[1]."TranslatedString" = :p21 ;
c4[1]."_Position" = 0;
c4[2]."LanguageId" = :p22 ;
c4[2]."StringResourceGuid" = :p23 ;
c4[2]."StringResourceId" = :p24 ;
c4[2]."TranslatedString" = :p25 ;
c4[2]."_Position" = 1;
c4[3]."LanguageId" = :p26 ;
c4[3]."StringResourceGuid" = :p27 ;
c4[3]."StringResourceId" = :p28 ;
c4[3]."TranslatedString" = :p29 ;
c4[3]."_Position" = 2;
c4[4]."LanguageId" = :p30 ;
c4[4]."StringResourceGuid" = :p31 ;
c4[4]."StringResourceId" = :p32 ;
c4[4]."TranslatedString" = :p33 ;
c4[4]."_Position" = 3;
SELECT MAX("Id") INTO "V_Id" FROM "sStringResourceItem";
INSERT INTO "sStringResourceItem" ("LanguageId", "StringResourceGuid", "StringResourceId", "TranslatedString")SELECT "LanguageId", "StringResourceGuid", "StringResourceId", "TranslatedString" FROM ARRAY C4;
SELECT "t"."Id" FROM "sStringResourceItem" "t"
WHERE EXISTS(SELECT * FROM ARRAY c4 "i" WHERE ("t"."LanguageId" = "i"."LanguageId" OR ("t"."LanguageId" IS NULL AND "i"."LanguageId" IS NULL )) AND ("t"."StringResourceGuid" = "i"."StringResourceGuid" OR ("t"."StringResourceGuid" IS NULL AND "i"."StringResourceGuid" IS NULL )) AND ("t"."StringResourceId" = "i"."StringResourceId" OR ("t"."StringResourceId" IS NULL AND "i"."StringResourceId" IS NULL )) AND (TEXT_EQUAL("t"."TranslatedString", "i"."TranslatedString") OR ("t"."TranslatedString" IS NULL AND "i"."TranslatedString" IS NULL )) ) AND ( "t"."Id" > "V_Id" OR "V_Id" IS NULL)
ORDER BY "t"."ROWID";
END;
END;
顶
有人遇到过吗?