在使用动态查询通过.net核心中的entityframework将数据插入postgresql时,输入字符串的格式不正确



使用.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时,您都希望利用这一点。如果大括号位于参数中而不是主字符串中,则不需要对其进行转义。

最新更新