【发布时间】:2021-01-30 16:29:24
【问题描述】:
最近我遇到了一个问题,我只需要使用 FromSqlRaw 到我的数据库来执行 Postgresql 扩展之一的功能。这个函数返回一个条目,我想以某种方式获取这个条目的值。但是,由于某些原因,我不能这样做:
var buffer = DataContext.LayerDatas.FromSqlRaw($"select ST_Buffer(ld.\"Geom\", 100, 'join=mitre') " +
$"from public.\"Layers\" ld where ld.\"LId\" = {layerId} and ld.\"OId\" = {objectId}").FirstOrDefault();
从 SqlRaw 获取计算值以便在我的代码中使用它的正确方法是什么?
编辑: 当我通过 DBeaver 执行查询时,它给了我以下信息:
我想在我的 C# 代码中使用它。
但是 c# 应用程序中的代码给了我以下异常:
42601 syntax error (at or near "d"),
它显示我的查询为:
{select ld."Geom", ST_Buffer(ld."Geom", 100, 'join=mitre') from public."Layers" ld where ld."LId" = f21e400c-9e6d-4c28-b14c-1f0ced5b6ebb and ld."OId" = 3126}
【问题讨论】:
-
"我不能这样做" => 请说明:您是否收到编译错误?例外?什么信息?
-
哪个值?...
-
我收到 42601 语法错误(在“d”处或附近),它显示我的查询为:{select ld."Geom", ST_Buffer(ld."Geom", 100, 'join= mitre') 来自 public."Layers" ld where ld."LId" = f21e400c-9e6d-4c28-b14c-1f0ced5b6ebb 和 ld."OId" = 3126}
-
ST_Buffer的值(ld.\"Geom\", 100, 'join=mitre'),是返回数据库入口st_buffer的函数(MULTIPOLYGON(((一些坐标))))跨度>
-
首先,在问题本身中发布实际的错误文本。
标签: c# asp.net postgresql linq postgis