10
このコードを各リポジトリクラスで使用すると、SQLプロファイリングが機能するようになりますが、そのコードを各クラスからStructureMapがDBを処理するクラスに移動する必要があります。リポジトリクラスのStructureMap DBServiceRegistryとMVC-mini-profiler?
例:
public DB CreateNewContext()
{
var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ConnectionString);
var profiledConnection = ProfiledDbConnection.Get(sqlConnection);
return DataContextUtils.CreateDataContext<DB>(profiledConnection);
}
public SqlRecipeRepository(DB dataContext)
{
_db = CreateNewContext();
}
今私はDataContextの変数はプロファイルバージョンであるので、私のDBServiceRegistryクラスから来てほしいです。ここで
がDBServiceRegistryクラスです:
public class DBServiceRegistry : Registry
{
public DBServiceRegistry()
{
var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["GetMeCooking.Data.Properties.Settings.server"].ConnectionString);
var profiledConnection = ProfiledDbConnection.Get(sqlConnection);
For<DB>().HybridHttpOrThreadLocalScoped().Use(() => DataContextUtils.CreateDataContext<DB>(profiledConnection));
//Original method just had this:
//For<DB>().HybridHttpOrThreadLocalScoped().Use(() => new DB());
}
}
このコードにエラーが発生することはありませんが、私は、SQLプロファイリングを得ることはありません、私が間違って何をやっていますか?
私がすることができますプロファイリングの部分がうまくいかない理由を本当に教えてください。しかし、コードに深刻な問題が1つあります。すべてのDbContextに使用される1つの接続インスタンスをレジストリに作成しています。 – PHeiberg
LINQ-to-SQL接続の '.Log'パラメータはどこに割り当てられていますか?また、 'ObjectFactory.GetInstance()'はどこに行っていますか? –