EF 5.0でEFトレースユーティリティを使用しようとしています(コードファースト)。ただし、これはedmxファイルを必要とするオブジェクトコンテキストでのみ機能します。
http://code.msdn.microsoft.com/EFProviderWrappers
誰かが最初にDBContextでEFコードの回避策を持っていますか?
アナンド
EF 5.0でEFトレースユーティリティを使用しようとしています(コードファースト)。ただし、これはedmxファイルを必要とするオブジェクトコンテキストでのみ機能します。
http://code.msdn.microsoft.com/EFProviderWrappers
誰かが最初にDBContextでEFコードの回避策を持っていますか?
アナンド
サイトの Q&A セクションから、著者は Code First を使用するための次のコードを持っています。
DbContext で DbCommand コンストラクターのオーバーロードを使用します...
var context = new NorthwindContext(CreateConnectionWrapper(@"name=NorthwindContext"));
そして CreateConnectionWrapper メソッド:
private static DbConnection CreateConnectionWrapper(string nameOrConnectionString) {
var providerInvariantName = "System.Data.SqlClient";
var connectionString = nameOrConnectionString;
//name=connectionName format
var index = nameOrConnectionString.IndexOf('=');
if (nameOrConnectionString.Substring(0, index).Trim()
.Equals("name", StringComparison.OrdinalIgnoreCase))
{
nameOrConnectionString = nameOrConnectionString
.Substring(index + 1).Trim();
}
//look up connection string name
var connectionStringSetting =
ConfigurationManager.ConnectionStrings[nameOrConnectionString];
if (connectionStringSetting != null)
{
providerInvariantName = connectionStringSetting.ProviderName;
connectionString = connectionStringSetting.ConnectionString;
}
//create the special connection string with the provider name in it
var wrappedConnectionString = "wrappedProvider=" +
providerInvariantName + ";" +
connectionString;
//create the tracing wrapper
var connection = new EFTracingConnection
{
ConnectionString = wrappedConnectionString
};
//hook up logging here
connection.CommandFinished +=
(sender, args) => Console.WriteLine(args.ToTraceString());
return connection; }
これは TracingWrapper を実行するだけですが、同じ方法で Caching ラッパーをラップすることもできます。