0
我有一個問題導致我很頭痛。前幾天我已經使用了一個解決方案,但是我還沒有找到它,如果你們中的一個人能夠幫助我,那會很棒!如何從LinqToEntities子句獲得SQL語句
我有這樣的方法把SQL語句對我來說:
private static string GetClause<T>(IQueryable<T> clause) where T : BaseEntity
{
string snippet = "FROM [dbo].[";
string sql = clause.ToString();
string sqlFirstPart = sql.Substring(sql.IndexOf(snippet));
sqlFirstPart = sqlFirstPart.Replace("AS [Extent1]", "");
sqlFirstPart = sqlFirstPart.Replace("[Extent1].", "");
return sqlFirstPart;
}
但是當我嘗試使用一些過濾器(例如在),導致它返回我一些「」 @p_這行不通linq _ {0}「。」而不是價值觀。我知道這些是我查詢的參數,但它們存儲在哪裏?
我在EF5 Code First上將它用於批量刪除目的。
我已經試過這個,但Parameters屬性來找我作爲一個空集合。我想這是因爲你發佈的這個解決方案只是在LinqToSQL中完成工作(迄今爲止我看到的解決方案都是LinqToSQL)。它根本不能解決問題。 我很匆忙,所以現在我剛剛通過了我需要的值作爲此方法的另一個參數。但我真的很想知道如何在不傳遞方法兩次的情況下完成此工作(一個傳遞給IQueryable,另一個傳遞給方法)。 –
@CarlosMoreira我注意到,當我改變命令序列或忘記ToTraceString時,我的參數也是空的,請嘗試使用與我的示例中完全相同的序列,並查看跟蹤字段以查看參數名稱的正確名稱。 – Erwin
在cast期間,它給了我一個異常:_無法將類型爲「System.Data.Entity.Infrastructure.DbQuery1 [MyType]」的對象強制類型爲「System.Data.Objects.ObjectQuery1 [MyType]'_。在投射之前我應該做更多的事情? –