繁体   English   中英

如何首先为EF代码配置EF跟踪提供程序

[英]How to configure EF Tracing provider for EF code first

我正在尝试将EF Tracing实用程序与EF 5.0一起使用(代码优先)。 但这仅适用于需要edmx文件的对象上下文。

http://code.msdn.microsoft.com/EFProviderWrappers

有人首先使用DBContext解决EF代码吗?

阿南德

在网站的“问答”部分,作者拥有使用“代码优先”的以下代码:

在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的功能,但是您也可以用相同的方式包装缓存包装器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM