/// <summary>
        /// Gets the entity framework context.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <returns></returns>
        private UserDashboardsEFDbContext GetContext(IUserDashboardsEFDataProvider provider)
        {
            if (provider.ProviderContext == null)
            {
                throw new Exception(String.Format("Provider {0} is not initialized.", provider.Name));
            }

            return(UserDashboardsEFDataConnection.GetContext(this.connectionName, provider));
        }
        /// <summary>
        /// Gets the entity framework context.
        /// </summary>
        /// <param name="connectionName">Name of the connection.</param>
        /// <param name="provider">The provider.</param>
        /// <returns></returns>
        public static UserDashboardsEFDbContext GetContext(string connectionName, IUserDashboardsEFDataProvider provider)
        {
            UserDashboardsEFDataConnection connection;

            if (!connections.TryGetValue(connectionName, out connection))
            {
                connection = InitializeConnection(connectionName, provider);
            }

            return(new UserDashboardsEFDbContext(connection.connectionString));
        }
 /// <summary>
 /// Gets the scope id.
 /// </summary>
 /// <param name="provider">The data provider.</param>
 /// <returns></returns>
 private string GetScopeId(IUserDashboardsEFDataProvider provider)
 {
     return(provider.ProviderContext.ProviderKey);
 }
        /// <summary>
        /// Initializes the connection.
        /// </summary>
        /// <param name="connectionName">Name of the connection.</param>
        /// <param name="dataProvider">The data provider.</param>
        /// <returns></returns>
        public static UserDashboardsEFDataConnection InitializeConnection(string connectionName, IUserDashboardsEFDataProvider dataProvider)
        {
            IConnectionStringSettings connectionSettings = UserDashboardsEFDataConnection.GetConnectionStringSettings(connectionName);

            UserDashboardsEFDataConnection connection;

            if (!UserDashboardsEFDataConnection.connections.TryGetValue(connectionSettings.Name, out connection))
            {
                lock (UserDashboardsEFDataConnection.connectionsLock)
                {
                    if (!UserDashboardsEFDataConnection.connections.TryGetValue(connectionSettings.Name, out connection))
                    {
                        connection = new UserDashboardsEFDataConnection(connectionSettings.Name, connectionSettings.ConnectionString, dataProvider);
                        UserDashboardsEFDataConnection.connections.Add(connectionSettings.Name, connection);
                    }
                }
            }
            return(connection);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="UserDashboardsEFDataConnection" /> class.
 /// </summary>
 /// <param name="connectionName">Name of the connection.</param>
 /// <param name="connectionString">The connection string.</param>
 /// <param name="dataProvider">The data provider.</param>
 private UserDashboardsEFDataConnection(string connectionName, string connectionString, IUserDashboardsEFDataProvider dataProvider)
 {
     this.connectionName   = connectionName;
     this.connectionString = connectionString;
     this.dataProvider     = dataProvider;
 }