我使用下面的代碼首先使用聯查詢內部錯誤使用C#轉換字符串GUID
void IRepository<T>.Delete(params Guid[] ids)
{
var sql = string.Format("UPDATE {0} SET [IsDeleted] = 1 WHERE [Id] IN (@ids) ", GetTableName());
string sep = String.Join(", ", ids.Select(x => "'" + x + "'"));
var sqlParams = new Object[]
{
new SqlParameter("ids", string.Join(",",sep)),
};
DataContext.Database.ExecuteSqlCommand(sql, sqlParams);
}
現在通過EF代碼執行刪除操作,當我執行命令它給了我
conversion failed when converting from a character string to uniqueidentifier
錯誤。
Hiwever當我在sql中運行查詢說。
UPDATE [dbo].[Table] SET [IsDeleted] = 1 WHERE [Id] IN ('20Cr0BCA-6EBB-E411-A04B-BC305BA8C713','506c79c1-6ebb-e411-a04b-bc305ba8c733')
它工作正常。
這樣做有可能嗎?或者我做錯了什麼?
不能使用'IN'具有可變。有關更多信息,請參閱http://stackoverflow.com/questions/337704/parameterize-a-sql-in-clause。 – 2015-02-24 13:14:28
我認爲問題出在這個GUID上:'20Cr0BCA-6EBB-E411-A04B-BC305BA8C713'。一個GUID不能包含一個「r」,因爲它是由十六進制數字組成的 – 2015-02-24 14:08:48
對不起我的不好..那肯定是一個排字錯誤 – 2015-02-24 14:20:17