Exemplo n.º 1
0
        public Database(Configuration configuration)
        {
            this.connectionString = configuration.ConnectionString;
            if (this.connectionString == null)
            {
                throw new Exception("Configuration.ConnectionString is missing");
            }

            if (!this.connectionString.ToLowerInvariant().Contains(FullUriKey))
            {
                throw new Exception("Configuration.ConnectionString has no FullUri");
            }

            this.isInMemory = this.connectionString.ToLowerInvariant().Contains(InMemoryKey);

            if (this.isInMemory && !this.connectionString.ToLowerInvariant().Contains(SharedCacheKey))
            {
                throw new Exception("Configuration.ConnectionString is in memory and FullUri has no \"?cache=shared\" parameter");
            }

            if (this.isInMemory)
            {
                this.id = Guid.NewGuid().ToString("N").ToLowerInvariant();
            }
            else
            {
                var connectionStringBuilder = new SQLiteConnectionStringBuilder(this.connectionString);
                var dataSource = connectionStringBuilder.FullUri;
                if (dataSource.Contains(UriQueySeparator))
                {
                    dataSource = dataSource.Substring(0, dataSource.IndexOf(UriQueySeparator, StringComparison.Ordinal));
                }

                this.id = Path.GetFileName(dataSource);
            }

            this.objectFactory = configuration.ObjectFactory;
            if (this.objectFactory == null)
            {
                throw new Exception("Configuration.ObjectFactory is missing");
            }

            this.roleCache      = configuration.RoleCache ?? new RoleCache();
            this.classCache     = configuration.ClassCache ?? new ClassCache();
            this.commandTimeout = configuration.CommandTimeout ?? 30;
            this.isolationLevel = configuration.IsolationLevel ?? IsolationLevel.Serializable;
            this.autoIncrement  = configuration.AutoIncrement ?? false;

            this.mapping = new Mapping(this);

            if (this.isInMemory)
            {
                this.inMemoryConnection = new SQLiteConnection(this.ConnectionString);
                this.inMemoryConnection.Open();
            }

            this.idSequence = IdSequence.GetOrCreate(this);
        }
Exemplo n.º 2
0
        public static IdSequence GetOrCreate(Database database)
        {
            lock (StaticLockObject)
            {
                IdSequence idSequence;
                if (!IdSequenceByPopulationId.TryGetValue(database.Id, out idSequence))
                {
                    idSequence = new IdSequence();
                    IdSequenceByPopulationId[database.Id] = idSequence;
                }

                return(idSequence);
            }
        }
Exemplo n.º 3
0
        public static IdSequence GetOrCreate(Database database)
        {
            lock (StaticLockObject)
            {
                IdSequence idSequence;
                if (!IdSequenceByPopulationId.TryGetValue(database.Id, out idSequence))
                {
                    idSequence = new IdSequence();
                    IdSequenceByPopulationId[database.Id] = idSequence;
                }

                return idSequence;
            }
        }