簡體   English   中英

實體框架將小數點分隔符從傳遞的值更改為 FromSqlRaw

[英]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,因此這不是數據庫的問題,但我應該以某種方式配置我的實體框架,但我不知道該怎么做,也找不到它。我該怎么辦?

UPDlatlngdouble類型(例如 -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 處的解析錯誤"

此外,我非常確定我的查詢是正確的。 每當我將這些latlng值傳遞到查詢字符串中時,它都可以正常工作。

今天早上經歷了同樣的情況。

您可以強制使用帶有.ToString(CultureInfo.InvariantCulture)的點分隔符來格式化 lat 和 lng。

評論后更新:

我不太確定,我猜問題出在正在運行的 Windows 區域設置/文化,因為我知道在我所在的地區 - 在我的開發機器上 - 小數點分隔符是, , not . .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM