[英]Entity Framework changes decimal separator from passed values to FromSqlRaw
我嘗試執行以下查詢:
dbContext.Datas.FromSqlRaw($"select LD.\"Id\", LD.\"OId\" from public.\"Datas\" LD where ST_Intersects(LD.\"Geometry\", st_geomfromtext('POINT({lat} {lng})'))").Select(l => l.Id);
但是每當我這樣做時,我都會收到以下錯誤:
""POINT(-1741541,25" <-- 幾何中 position 17 的解析錯誤" 顯然,它將 -1741541.25 更改為 -1741541,25,並且它以某種方式與語言環境設置相關聯。但是,我的數據庫語言環境是 en-US,因此這不是數據庫的問題,但我應該以某種方式配置我的實體框架,但我不知道該怎么做,也找不到它。我該怎么辦?
UPD : lat
和lng
是double
類型(例如 -1741541.255287818)
我也嘗試使用FromSqlInterpolated
來做到這一點
dbContext.Datas.FromSqlInterpolated($"select LD.\"Id\", LD.\"OId\" from public.\"Datas\" LD where ST_Intersects(LD.\"Geometry\", st_geomfromtext('POINT({lat} {lng})'))").Select(l => l.Id);
但我得到這個錯誤:
""POINT(@p" <-- 幾何中 position 8 處的解析錯誤"
此外,我非常確定我的查詢是正確的。 每當我將這些lat
和lng
值傳遞到查詢字符串中時,它都可以正常工作。
今天早上經歷了同樣的情況。
您可以強制使用帶有.ToString(CultureInfo.InvariantCulture)
的點分隔符來格式化 lat 和 lng。
評論后更新:
我不太確定,我猜問題出在正在運行的 Windows 區域設置/文化,因為我知道在我所在的地區 - 在我的開發機器上 - 小數點分隔符是,
, not .
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.