簡體   English   中英

帶有列變量的 EF Core FromSqlRaw

[英]EF Core FromSqlRaw with column variable

嘗試將列設置為FromRawSql中的參數。 查詢總是返回 null,我理解這是因為 SQL 是在設置參數值之前編譯的。 如何將列名作為參數傳遞到查詢中?

我正在嘗試什么:

var param = new SqlParameter[] {
                        new SqlParameter("@col", dataDiscriminator),
                        new SqlParameter("@value", itemDiscValue)
                    };

var thisq = context.Devices.FromSqlRaw("SELECT * FROM Devices WHERE @col = @value", param);                        
var thisDevice = thisq.SingleOrDefault();

將生產 SQL:

DECLARE @col nvarchar(4) = N'Name';
DECLARE @value nvarchar(26) = N'Registration Template';

SELECT * FROM Devices WHERE @prop = @value

您不能使用參數作為表名或列名。 嘗試這個

var param = new SqlParameter[] {
                        new SqlParameter("@value", itemDiscValue)
                    };
var thisq = context.Devices.FromSqlRaw($"SELECT * from Devices WHERE {dataDiscriminator} = @value", param).ToList();                        
 var thisDevice = thisq.SingleOrDefault();

我不知道 dataDiscriminator 數據來自哪里,但始終記得 sql 腳本注入。

暫無
暫無

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

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