2012-11-22 48 views
0

基於thisthis,我做以下獲得通過實體框架的第二行,我得到enerated 5.0見的EntityFramework生成的SQL命令:轉換異常

var query = from s in db.ClassesDetails 
      where s.ClassSet == "SetOne" 
      orderby s.ClassNum 
      select s.ClassNum; 
var objectQuery = (System.Data.Objects.ObjectQuery)query; // <= problem! 
var sql = objectQuery.ToTraceString(); 

但是,SQL以下例外:

Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery`1[System.Int16]' to type 'System.Data.Objects.ObjectQuery'. 

自從那些SO答案發布以來,有什麼改變嗎?我需要做什麼才能將查詢作爲字符串?我們針對Azure SQL運行,因此無法運行通常的SQL分析器工具:(

回答

1

ObjectQuery是在您使用ObjectContext時創建的,當您使用DbContext時,它使用並創建了DbQuery。不是DbQuery而是DbQuery<T>。我相信在DbQueries中顯示SQL時,你可以在DbQuery實例上做.ToString(),所以不需要強制轉換,注意參數值不會被顯示,參數值最近被添加到輸出中在EF6 - 如果你需要這個,你可以嘗試從http://entityframework.codeplex.com

+0

最新的每晚構建是的,'query.ToString()'做的伎倆。 –