簡體   English   中英

ExecuteSqlInterpolated/ExecuteSqlRaw 參數在 asp.net 內核中錯誤地傳遞到數據庫

[英]ExecuteSqlInterpolated/ExecuteSqlRaw parameters pass to database incorrectly in asp.net core

我正在嘗試使用 ExecuteSqlInterpolated 來更新我的數據庫。 但是,我的SQL參數好像有問題。 運行以下代碼會正確更新 intField1 和 intField2,但 stringField 會變為字符串“@p0”。

_context.Database.ExecuteSqlInterpolated($"UPDATE table SET stringField='{someString}', intField1={someInt}, intField2={someOtherInt} WHERE id='{id}'");

當字符串傳遞給方法時,我已經驗證了我的變量是否包含所需的值。 我知道@p0 是 SQL 用來表示查詢中的第一個參數的,但是為什么它沒有被我給它的字符串替換呢? 我也嘗試過使用 ExecuteSqlRaw 但遇到了同樣的問題。 我對 SQL 的了解充其量是有限的,我知道在 web 開發人員中勉強過得去,所以我猜我在這里制作查詢時犯了一些簡單的錯誤,但顯然我不確定。

我知道已經很晚了,但不要在參數中使用引號,特別是在使用 int 數據類型的地方(刪除單引號)

_context.Database.ExecuteSqlInterpolated($"UPDATE table SET stringField={someString}, intField1={someInt}, intField2={someOtherInt} WHERE id={id}");

暫無
暫無

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

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