簡體   English   中英

在C#中將字符串轉換為GUID時出錯

[英]Error converting string to GUID in c#

我正在使用以下代碼首先通過內部使用內聯查詢通過EF代碼執行刪除操作

 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);
    }

現在,當我執行命令時,它給了我

conversion failed when converting from a character string to uniqueidentifier

錯誤。

當我在sql中運行查詢時說。

   UPDATE [dbo].[Table] SET [IsDeleted] = 1 WHERE [Id] IN ('20Cr0BCA-6EBB-E411-A04B-BC305BA8C713','506c79c1-6ebb-e411-a04b-bc305ba8c733') 

它工作正常。

這可能這樣做嗎?還是我做錯了什么?

我會做這樣的事情

void IRepository<T>.Delete(params Guid[] ids)
{
    if (ids == null || !ids.Any())
        return;
    var idParams = ids.Select((x, cnt)=> new { ParamName ="@ids"+ cnt, Param = x});
    var sql = string.Format("UPDATE {0} SET [IsDeleted] = 1 WHERE [Id] IN ("+ String.Join(", ",idParams.Select(x =>  x.ParamName)) + ") ", "Table");
    var sqlParams = idParams.Select(x=> new SqlParameter(x.ParamName, x.Param)).ToArray(); 
    DataContext.Database.ExecuteSqlCommand(sql, sqlParams);
}

暫無
暫無

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

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