gpt4 book ai didi

C# ??运算符和 ora-12704 : character set mismatch

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:08 28 4
gpt4 key购买 nike

我有带有 EF 4、.net 4 的 asp.net mvc 4 应用程序这段代码

public List<ListItem> GetViolatedArticlesByLaw(int lawId, string culture)
{
culture = culture.ToLower();

var ans =
(from art in context.TITLENORMALAWs.Where(l => l.PARENTID == lawId)
select new ListItem
{
ID = art.ID,
ParentID = lawId,
Value = (art.NUM_STATSTR ?? ""),
});
Debug.WriteLine( ((System.Data.Objects.ObjectQuery)ans).ToTraceString() );

return ans.ToList();
}

抛出 ora-12704:字符集不匹配。如果我从 List 中选择,它运行得很好,如下所示:from art in context.TITLENORMALAWs.Where(l => l.PARENTID == lawId).ToList()

这是生成的 SQL:

SELECT 
"Extent1"."ID" AS "ID",
:p__linq__1 AS "C1",
CASE WHEN ("Extent1"."NUM_STATSTR" IS NULL) THEN '' ELSE "Extent1"."NUM_STATSTR" END AS "C2"
FROM "AISSMK"."TITLENORMALAW" "Extent1"
WHERE ("Extent1"."PARENTID" = :p__linq__0)

它在 sqldeveloper 中产生相同的错误,如果我将这段 THEN '' ELSE 更改为此 THEN n'' ELSE 它运行正常。表定义中的 NUM_STATSTR 为 NVARCHAR2(30)

如何让 linq 生成正确的 sql?或者我必须在选择之前调用 ToList() 并且没有其他方法吗?

最佳答案

@Orif 我认为您应该尝试手动构建查询,而不是使用 LINQ-to-SQL 生成器。

尝试在 DataContext 类上使用 ExecuteQuery 方法,并尝试将转换添加到 NVARCHAR

如需更多帮助,请阅读此处,https://social.msdn.microsoft.com/Forums/en-US/20d456f0-9174-4745-bbc5-571f68879e27/net-strings-sql-paramater-type-always-nvarchar?forum=linqtosql

关于C# ??运算符和 ora-12704 : character set mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28082826/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com