Могу ли я иметь более одного профилированного соединения с MVC Mini Profiler? - PullRequest
2 голосов
/ 15 ноября 2011

Я бы хотел использовать смесь как Dapper, так и EF 4 в моем приложении MVC3.Возможно ли иметь более одного профилированного соединения или совместно использовать профилированное соединение?

1 Ответ

1 голос
/ 17 ноября 2011

Да, вы можете использовать профилированное соединение EF с Dapper, вот что я в итоге использовал.

    private static DatabaseContext GetDatabaseContext()
    {
        using (MiniProfiler.Current.Step("Create Oracle EF Context"))
        {
            var pConn = ProfiledConnection;
            return pConn.CreateObjectContext<DatabaseContext>();
        }
    }

    private static EFProfiledDbConnection ProfiledConnection
    {
        get
        {
            using (MiniProfiler.Current.Step("Create Oracle Profiled Connection"))
            {
                var connectionString =
                    ConfigurationManager.ConnectionStrings["DatabaseContext"].ConnectionString;
                var ecsb = new EntityConnectionStringBuilder(connectionString);
                var oraConn = new OracleConnection(ecsb.ProviderConnectionString);
                var pConn = new EFProfiledDbConnection(oraConn, MiniProfiler.Current);
                return pConn;
            }
        }
    }

Тогда я использовал их таким образом

            using (var ctx = GetDatabaseContext())
            {
                var result = ctx.SOME_EF_ENTITY.FirstOrDefault(c => c.LOGINNAME == username && c.PASSWORD == password);


                return result;
            }

и

        const string sql = @"
                    SELECT ppro_status_code_id 
                    FROM   ppro_status_codes 
                    WHERE  table_name = 'CLIENT_FC_SHARED' 
                        AND status_code = :status_code";

        using (var cnn = ProfiledConnection)
        {
            cnn.Open();

            var data = cnn.Query<dynamic>(sql, new { status_code = code });
            var result = data.First();
            var codeID = result.PPRO_STATUS_CODE_ID;
            return codeID;
        }
...