2017-06-12 66 views
3

我一直在這個項目上使用Dapper幾個月並且一直沒有問題。但現在我必須使用原始SQL而不是存儲過程和精簡器來創建和更改用戶角色在數據庫中,因爲sp_addrolemember現在已被棄用。小巧的參數沒有被替換

我用這個作爲我的短小精悍代碼

conn.Open(); 
var p = new DynamicParameters(); 
p.Add("@UserLogin", user); 
p.Add("@UserRole", role); 
conn.Execute("Create User @UserLogin", p); 
conn.Execute("ALTER ROLE @UserRole ADD MEMBER @UserLogin", p); 

我不斷收到同樣的錯誤:

Invalid syntax at @UserLogin

我通過我的domain\username的登錄信息和我已經試過了沒有domain\。一樣。有人可以對此有所瞭解嗎?

+2

您是否嘗試過使用常規類而不是DynamicParameters類? – Gusman

+2

您不能使用參數來表示系統名稱,如表,列或甚至用戶或角色。這不是一個小巧的問題 – Steve

+0

這就是我在想什麼。你能提供一個鏈接到這個文件嗎?我試圖尋找這種類型的信息,以防原因。 –

回答

-1

我不熟悉,小巧玲瓏,但你可以嘗試嵌入參數值到您發送要執行的SQL字符串:

conn.Open(); 
conn.Execute("Create User " + user); 
conn.Execute("ALTER ROLE " + role + " ADD MEMBER " + user); 

注意,這個自帶的安全隱患,並可能導致其他的問題!

+1

'請注意,這有安全風險,可能會導致其他問題!'那麼你可能不應該建議這樣做.. – Rob