private LinqToDBDomainContext CreateDomainContext(StorageMappingDescriptor storageMappingDescriptor)
        {
            var linqToDbModel = _linqToDbModelFactory.Create(storageMappingDescriptor.EntityContainerName);

            var connections = Connections.GetOrAdd(
                storageMappingDescriptor.ConnectionStringIdentity,
                connectionStringIdentity =>
            {
                var dataProvider     = new SQLiteDataProvider();
                var connectionString = _connectionStringSettings.GetConnectionString(connectionStringIdentity);
                var connection       = (SQLiteConnection)dataProvider.CreateConnection(connectionString);
                connection.Open();

                var dataConnection = new DataConnection(dataProvider, connection)
                {
                    CommandTimeout = linqToDbModel.QueryExecutionTimeout,
                    IsMarsEnabled  = false
                };
                dataConnection.AddMappingSchema(linqToDbModel.MappingSchema);

                return(Tuple.Create(connection, TuneConnection(dataConnection)));
            });

            return(new LinqToDBDomainContext(connections.Item1,
                                             connections.Item2,
                                             new ManagedConnectionStateScopeFactory(),
                                             new WritingStrategyFactory(),
                                             linqToDbModel.TransactionOptions,
                                             new NullPendingChangesHandlingStrategy()));
        }
 public IReadableDomainContext Create(StorageMappingDescriptor storageMappingDescriptor)
 {
     return(CreateDomainContext(storageMappingDescriptor));
 }