Example #1
0
        /// <summary>
        /// Gets a command text from the cache for the <see cref="DbConnectionExtension.Update{TEntity}(IDbConnection, TEntity, QueryGroup, int?, IDbTransaction, ITrace, IStatementBuilder)"/> operation.
        /// </summary>
        /// <typeparam name="TEntity">The type of the target entity.</typeparam>
        /// <param name="request">The request object.</param>
        /// <returns>The cached command text.</returns>
        public static string GetUpdateText <TEntity>(UpdateRequest request)
            where TEntity : class
        {
            var commandText = (string)null;

            if (m_cache.TryGetValue(request, out commandText) == false)
            {
                var statementBuilder = (request.StatementBuilder ??
                                        StatementBuilderMapper.Get(request.Connection?.GetType())?.StatementBuilder ??
                                        new SqlDbStatementBuilder());
                commandText = statementBuilder.CreateUpdate(queryBuilder: new QueryBuilder <TEntity>(),
                                                            where : request.Where);
                m_cache.TryAdd(request, commandText);
            }
            else
            {
                request.Where?.AppendParametersPrefix();
            }
            return(commandText);
        }
Example #2
0
        /// <summary>
        /// Initializes all necessary settings for MySql.
        /// </summary>
        public static void Initialize()
        {
            // Skip if already initialized
            if (IsInitialized == true)
            {
                return;
            }

            // Map the DbSetting
            DbSettingMapper.Add(typeof(MySqlConnection), new MySqlConnectorDbSetting(), true);

            // Map the DbHelper
            DbHelperMapper.Add(typeof(MySqlConnection), new MySqlConnectorDbHelper(), true);

            // Map the Statement Builder
            StatementBuilderMapper.Add(typeof(MySqlConnection), new MySqlConnectorStatementBuilder(), true);

            // Set the flag
            IsInitialized = true;
        }
Example #3
0
        /// <summary>
        /// Gets a command text from the cache for the <see cref="DbConnectionExtension.InlineMerge{TEntity}(IDbConnection, object, bool?, int?, IDbTransaction, ITrace, IStatementBuilder)"/> operation.
        /// </summary>
        /// <typeparam name="TEntity">The type of the target entity.</typeparam>
        /// <param name="request">The request object.</param>
        /// <returns>The cached command text.</returns>
        public static string GetInlineMergeText <TEntity>(InlineMergeRequest request)
            where TEntity : class
        {
            var commandText = (string)null;

            if (m_cache.TryGetValue(request, out commandText) == false)
            {
                var primary  = PrimaryKeyCache.Get <TEntity>();
                var identity = IdentityCache.Get <TEntity>();
                if (identity != null && identity != primary)
                {
                    throw new InvalidOperationException($"Identity property must be the primary property for type '{typeof(TEntity).FullName}'.");
                }
                var isPrimaryIdentity = (identity != null);
                var statementBuilder  = (request.StatementBuilder ??
                                         StatementBuilderMapper.Get(request.Connection?.GetType())?.StatementBuilder ??
                                         new SqlDbStatementBuilder());
                if (statementBuilder is SqlDbStatementBuilder)
                {
                    var sqlStatementBuilder = (SqlDbStatementBuilder)statementBuilder;
                    if (isPrimaryIdentity == false)
                    {
                        isPrimaryIdentity = PrimaryKeyIdentityCache.Get <TEntity>(request.Connection.ConnectionString, Command.InlineMerge);
                    }
                    commandText = sqlStatementBuilder.CreateInlineMerge(queryBuilder: new QueryBuilder <TEntity>(),
                                                                        fields: request.Fields,
                                                                        qualifiers: request.Qualifiers,
                                                                        overrideIgnore: request.OverrideIgnore,
                                                                        isPrimaryIdentity: isPrimaryIdentity);
                }
                else
                {
                    commandText = statementBuilder.CreateInlineMerge(queryBuilder: new QueryBuilder <TEntity>(),
                                                                     fields: request.Fields,
                                                                     qualifiers: request.Qualifiers,
                                                                     overrideIgnore: request.OverrideIgnore);
                }
                m_cache.TryAdd(request, commandText);
            }
            return(commandText);
        }
Example #4
0
        /// <summary>
        /// Initializes all necessary settings for SqLite.
        /// </summary>
        public static void Initialize()
        {
            // Skip if already initialized
            if (IsInitialized == true)
            {
                return;
            }

            #region SDS

            // Map the DbSetting
            DbSettingMapper.Add(typeof(SQLiteConnection), new SqLiteDbSetting(true), true);

            // Map the DbHelper
            DbHelperMapper.Add(typeof(SQLiteConnection), new SqLiteDbHelper(new SdsSqLiteDbTypeNameToClientTypeResolver()), true);

            // Map the Statement Builder
            StatementBuilderMapper.Add(typeof(SQLiteConnection), new SqLiteStatementBuilder(DbSettingMapper.Get(typeof(SQLiteConnection)),
                                                                                            new SqLiteConvertFieldResolver(),
                                                                                            new ClientTypeToAverageableClientTypeResolver()), true);

            #endregion

            #region MDS

            // Map the DbSetting
            DbSettingMapper.Add(typeof(SqliteConnection), new SqLiteDbSetting(false), true);

            // Map the DbHelper
            DbHelperMapper.Add(typeof(SqliteConnection), new SqLiteDbHelper(new MdsSqLiteDbTypeNameToClientTypeResolver()), true);

            // Map the Statement Builder
            StatementBuilderMapper.Add(typeof(SqliteConnection), new SqLiteStatementBuilder(DbSettingMapper.Get(typeof(SqliteConnection)),
                                                                                            new SqLiteConvertFieldResolver(),
                                                                                            new ClientTypeToAverageableClientTypeResolver()), true);

            #endregion

            // Set the flag
            IsInitialized = true;
        }
Example #5
0
        /// <summary>
        /// Initializes all necessary settings for SqLite.
        /// </summary>
        public static void Initialize()
        {
            // Skip if already initialized
            if (IsInitialized == true)
            {
                return;
            }

            // Map the DbSetting
            var mdsDbSetting = new SqLiteDbSetting(false);

            DbSettingMapper.Add <SqliteConnection>(mdsDbSetting, true);

            // Map the DbHelper
            DbHelperMapper.Add <SqliteConnection>(new SqLiteDbHelper(mdsDbSetting, new MdsSqLiteDbTypeNameToClientTypeResolver()), true);

            // Map the Statement Builder
            StatementBuilderMapper.Add <SqliteConnection>(new SqLiteStatementBuilder(mdsDbSetting,
                                                                                     new SqLiteConvertFieldResolver(),
                                                                                     new ClientTypeToAverageableClientTypeResolver()), true);

            // Set the flag
            IsInitialized = true;
        }