2層のWebアプリケーションがあります。DataAccessとWebSite。
そのためdataContext.cs
、DataAccess層でラッパーを追加しました...
//The autogenreated context when I made the linq2sql class
public static MyDataContext DataContext
{
get
{
//We are in a web app, use a request scope
if (HttpContext.Current != null)
{
if (HttpContext.Current.Items["dc"] == null)
{
MyDataContext dc = new MyDataContext ();
HttpContext.Current.Items["dc"] = dc;
return dc;
}
else
return (MyDataContext )HttpContext.Current.Items["dc"];
}
else
{
if (dataContext == null)
dataContext = new MyDataContext ();
return dataContext;
}
}
}
//the method I added to the autogenreated contex in
//an attempt to wrap the profiler around it
public static MyDataContext Get()
{
var sqlConnection = new MyDataContext().Connection;
var profiledConnection = new StackExchange.Profiling.Data.ProfiledDbConnection(sqlConnection, MiniProfiler.Current);
return new MyDataContext(profiledConnection);
}
つまり、これは、profileConnectionが呼び出されたとき、ただしreturn New MyDataContext(porofiledConnection)
また、私のビジネスロジックでは、DataAccess層でも、dbコンテキストがすべてではなくで作成されていることを確認しdb = MyDataContext.Get()
ました。db = new MyDataContext();
public class MyOrders(){
private static MyDataContext db = MyDataContext.Get();
public static List<model> GetOrderHistory(){
var = db.MyStoredProcedure(args) //Inspecting here before execution
//proces result and return list of model
}
}
さて、いくつかのページでSQL行を取得していたので、それらをクリックして検査することができました。しかし、私がサイトを閲覧した後、それはこれを表示するだけです-SQL行はもうありませんか?このページのように、SQLの重複がランダムに表示されます-しかし、リロードすると消えてしまいます。
また、これまでプロファイラーで実行したことがないこのページでは、読み込み時間の問題があり、使用したSQLを特定できません。
私は何か見落としてますか?SQLはキャッシュされていますか?Linq2SqlがSQLをキャッシュしている場合でも、SQLを常に確認したいと思います。私は何を間違えましたか?