星期三, 4月 15, 2009

抓出Entity Framework的SQL指令

最近在研究Entity Framework..發現EF真的蠻不錯用的..尤其在Linq熟得時候..EF就可以很得心應手..今天在寫的時候..覺得EF丟出的指令還是要試著去了解..因為有時複雜的Linq to Entity還是需要看看怎樣寫才能丟出有效率的SQL Statement..下面就是簡單的兩個方法去抓出SQL Statement..

第一種方法

using (NORTHWNDModel.NORTHWNDEntities db = new NORTHWNDModel.NORTHWNDEntities())
{
var aaaa = db.Orders.Select(a => new { a.ShipName, a.ShipCity }).Take(10);
ObjectQuery oq = aaaa as ObjectQuery;
if (oq != null)
{
string SQLStr = oq.ToTraceString();
Response.Write(SQLStr);
}
}

第二種方法

using (NORTHWNDModel.NORTHWNDEntities db = new NORTHWNDModel.NORTHWNDEntities())
{
var aaaa = db.Orders.Select(a => new { a.ShipName, a.ShipCity }).Take(10);
MethodInfo mi = aaaa.GetType().GetMethod("ToTraceString");
if (mi != null)
Response.Write(mi.Invoke(aaaa, null).ToString());
}

結果:

fdf

第一種方法效率好很多..如果可以就用第一種方法ㄅ..Open-mouthedOpen-mouthedOpen-mouthedOpen-mouthedOpen-mouthedOpen-mouthedOpen-mouthed..

參考:

沒有留言: