상속: Shaolinq.Persistence.SqlDatabaseContextInfo
예제 #1
0
 protected SqliteSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager)
     : base(model, SqliteSqlDialect.Default, sqlDataTypeProvider, sqlQueryFormatterManager, Path.GetFileNameWithoutExtension(contextInfo.FileName), contextInfo)
 {
     this.FileName = contextInfo.FileName;
     this.IsSharedCacheConnection = IsSharedConnectionRegex.IsMatch(this.FileName);
     this.IsInMemoryConnection    = IsMemoryConnectionRegex.IsMatch(this.FileName);
 }
		protected SqliteSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager)
			: base(model, new SqliteSqlDialect(), sqlDataTypeProvider, sqlQueryFormatterManager, Path.GetFileNameWithoutExtension(contextInfo.FileName), contextInfo)
		{
			this.FileName = contextInfo.FileName;
			this.IsSharedCacheConnection = IsSharedConnectionRegex.IsMatch(this.FileName);
			this.IsInMemoryConnection = IsMemoryConnectionRegex.IsMatch(this.FileName);
		}
예제 #3
0
        public SqliteMonoSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager)
            : base(model, contextInfo, sqlDataTypeProvider, sqlQueryFormatterManager)
        {
            if (this.FileName != null)
            {
                var connectionStringBuilder = new SqliteConnectionStringBuilder
                {
                    Enlist     = false,
                    DataSource = contextInfo.FileName
                };

                connectionStringBuilder.Add("DateTimeKind", contextInfo.DateTimeKind);
                connectionStringBuilder.Add("foreign keys", 1);

                this.ConnectionString = connectionStringBuilder.ConnectionString;
            }
            else
            {
                this.ConnectionString = contextInfo.ConnectionString;
            }

            this.ServerConnectionString = this.ConnectionString;

            this.SchemaManager = new SqliteMonoSqlDatabaseSchemaManager(this);
        }
        public static SqliteSqlDatabaseContext Create(SqliteSqlDatabaseContextInfo contextInfo, DataAccessModel model)
        {
            var constraintDefaults = model.Configuration.ConstraintDefaults;
            var sqlDataTypeProvider = new SqliteSqlDataTypeProvider(constraintDefaults);
            var sqlQueryFormatterManager = new DefaultSqlQueryFormatterManager(SqliteSqlDialect.Default, sqlDataTypeProvider, typeof(SqliteSqlQueryFormatter));

            return new SqliteMonoSqlDatabaseContext(model, contextInfo, sqlDataTypeProvider, sqlQueryFormatterManager);
        }
        public static SqliteSqlDatabaseContext Create(SqliteSqlDatabaseContextInfo contextInfo, DataAccessModel model)
        {
            var constraintDefaults       = model.Configuration.ConstraintDefaults;
            var sqlDataTypeProvider      = new SqliteSqlDataTypeProvider(constraintDefaults);
            var sqlQueryFormatterManager = new DefaultSqlQueryFormatterManager(SqliteSqlDialect.Default, sqlDataTypeProvider, typeof(SqliteSqlQueryFormatter));

            return(new SqliteMonoSqlDatabaseContext(model, contextInfo, sqlDataTypeProvider, sqlQueryFormatterManager));
        }
예제 #6
0
        public static SqliteSqlDatabaseContext Create(SqliteSqlDatabaseContextInfo contextInfo, DataAccessModel model)
        {
            var constraintDefaults       = model.Configuration.ConstraintDefaultsConfiguration;
            var sqlDialect               = new SqliteSqlDialect();
            var sqlDataTypeProvider      = CreateSqlDataTypeProvider(model, contextInfo, () => new SqliteSqlDataTypeProvider(constraintDefaults));
            var typeDescriptorProvider   = model.TypeDescriptorProvider;
            var sqlQueryFormatterManager = new DefaultSqlQueryFormatterManager(sqlDialect, model.Configuration.NamingTransforms, (options, connection) => new SqliteSqlQueryFormatter(options, sqlDialect, sqlDataTypeProvider, typeDescriptorProvider));

            return(new SqliteMonoSqlDatabaseContext(model, contextInfo, sqlDataTypeProvider, sqlQueryFormatterManager));
        }
		public static SqliteSqlDatabaseContext Create(SqliteSqlDatabaseContextInfo contextInfo, DataAccessModel model)
		{
			var constraintDefaults = model.Configuration.ConstraintDefaultsConfiguration;
			var sqlDialect = new SqliteSqlDialect();
			var sqlDataTypeProvider = new SqliteSqlDataTypeProvider(constraintDefaults);
			var typeDescriptorProvider = model.TypeDescriptorProvider;
			var sqlQueryFormatterManager = new DefaultSqlQueryFormatterManager(sqlDialect, options => new SqliteSqlQueryFormatter(options, sqlDialect, sqlDataTypeProvider, typeDescriptorProvider));

			return new SqliteMonoSqlDatabaseContext(model, contextInfo, sqlDataTypeProvider, sqlQueryFormatterManager);
		}
예제 #8
0
        protected SqliteSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager)
            : base(model, new SqliteSqlDialect(), sqlDataTypeProvider, sqlQueryFormatterManager, Path.GetFileNameWithoutExtension(contextInfo.FileName), contextInfo)
        {
            if (contextInfo.FileName == null && contextInfo.ConnectionString == null)
            {
                throw new ArgumentException($"Must supply {nameof(contextInfo.FileName)} or {nameof(contextInfo.ConnectionString)}", nameof(contextInfo));
            }

            this.FileName = contextInfo.FileName;

            this.IsSharedCacheConnection = IsSharedConnectionRegex.IsMatch(this.FileName ?? contextInfo.ConnectionString);
            this.IsInMemoryConnection    = IsMemoryConnectionRegex.IsMatch(this.FileName ?? contextInfo.ConnectionString);
        }
        public SqliteOfficialSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager)
            : base(model, contextInfo, sqlDataTypeProvider, sqlQueryFormatterManager)
        {
            if (this.FileName != null)
            {
                Version version;
                var     versionString = SQLiteConnection.SQLiteVersion;

                if (Version.TryParse(versionString, out version))
                {
                    if (version < new Version(3, 7, 7))
                    {
                        bool isInMemory;
                        var  uri = contextInfo.FileName;

                        Logger.WarnFormat("Sqlite version {0} does not support URIs", versionString);

                        uri = ConvertNewStyleUriToOldStyleUri(uri, out isInMemory);

                        this.IsInMemoryConnection    = isInMemory;
                        this.IsSharedCacheConnection = false;
                        this.FileName = uri;
                    }
                }
                else
                {
                    Logger.WarnFormat("Cannot parse sqlite version: {0}", versionString);
                }

                var connectionStringBuilder = new SQLiteConnectionStringBuilder
                {
                    FullUri      = this.FileName,
                    Enlist       = false,
                    ForeignKeys  = true,
                    DateTimeKind = contextInfo.DateTimeKind
                };

                this.ConnectionString = connectionStringBuilder.ConnectionString;
            }
            else
            {
                this.ConnectionString = contextInfo.ConnectionString;
            }

            this.ServerConnectionString = this.ConnectionString;

            this.SchemaManager = new SqliteOfficialSqlDatabaseSchemaManager(this);
        }
예제 #10
0
        public SqliteMonoSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager)
            : base(model, contextInfo, sqlDataTypeProvider, sqlQueryFormatterManager)
        {
            var connectionStringBuilder = new SqliteConnectionStringBuilder
            {
                Enlist = false,
                DataSource = contextInfo.FileName
            };

            connectionStringBuilder.Add("foreign keys", 1);

            this.ConnectionString = connectionStringBuilder.ConnectionString;
            this.ServerConnectionString = this.ConnectionString;

            this.SchemaManager = new SqliteMonoSqlDatabaseSchemaManager(this);
        }
        public SqliteOfficialsSqlDatabaseContext(DataAccessModel model, SqliteSqlDatabaseContextInfo contextInfo, SqlDataTypeProvider sqlDataTypeProvider, SqlQueryFormatterManager sqlQueryFormatterManager)
            : base(model, contextInfo, sqlDataTypeProvider, sqlQueryFormatterManager)
        {
            Version version;
            var versionString = SQLiteConnection.SQLiteVersion;

            if (Version.TryParse(versionString, out version))
            {
                if (version < new Version(3, 7, 7))
                {
                    bool isInMemory;
                    var uri = contextInfo.FileName;

                    Logger.WarnFormat("Sqlite version {0} does not support URIs", versionString);

                    uri = ConvertNewStyleUriToOldStyleUri(uri, out isInMemory);

                    this.IsInMemoryConnection = isInMemory;
                    this.IsSharedCacheConnection = false;
                    this.FileName = uri;
                }
            }
            else
            {
                Logger.WarnFormat("Cannot parse sqlite version: {0}", versionString);
            }

            var connectionStringBuilder = new SQLiteConnectionStringBuilder();

            connectionStringBuilder.FullUri = this.FileName;
            connectionStringBuilder.Enlist = false;
            connectionStringBuilder.ForeignKeys = true;

            this.ConnectionString = connectionStringBuilder.ConnectionString;
            this.ServerConnectionString = this.ConnectionString;

            this.SchemaManager = new SqliteOfficialSqlDatabaseSchemaManager(this);
        }