使用.net核心实体框架将数据插入pgsql时出错错误是输入字符串的格式不正确这是我执行的查询
INSERT INTO public."MedQuantityVerification"("Id","MedId","ActivityBy","ActivityOn","Quantity","ActivityType","SupposedOn","Note") Values(7773866,248953,8887,'7/14/2018 10:43:43 PM','42.5 qty',5,NULL,'I counted forty two {point} five.')
无论如何,当我直接在postgresql浏览器上运行该查询时,它运行得很好看起来像c方面的问题,但不知道是什么?还有一个问题是{point}
这就是我执行动态查询的方式
db.Database.ExecuteSqlRaw(查询(
您必须转义花括号:
{point}应该是{{point}}
ExecuteSqlRaw
使用大括号来参数化原始查询,因此如果您的查询像OP那样自然地包含它们,函数将尝试解析它们。像Koen Schepens的回答中那样,将大括号加倍作为转义序列,并告诉函数不要将其解析为参数。
该函数的文档使用以下示例来说明它为什么要这样做:
var userSuppliedSearchTerm = ".NET";
context.Database.ExecuteSqlRaw("UPDATE Blogs SET Rank = 50 WHERE Name = {0}", userSuppliedSearchTerm);
请注意,每当您接受用户输入并将其传递给ExecuteSqlRaw
时,您都希望利用这一点。如果大括号位于参数中而不是主字符串中,则不需要对其进行转义。