コード例 #1
0
    private partial ILink <int?> OnTruncate(AbstractObjectName tableName)
    {
        //Verify the table name actually exists.
        var table = DatabaseMetadata.GetTableOrView(tableName);

        return(Sql("TRUNCATE TABLE " + table.Name.ToQuotedString() + ";").AsNonQuery());
    }
コード例 #2
0
    private partial ILink <int?> OnDeleteAll(AbstractObjectName tableName)
    {
        //Verify the table name actually exists.
        var table = DatabaseMetadata.GetTableOrView(tableName);

        return(Sql("DELETE FROM " + table.Name.ToQuotedString() + ";").AsNonQuery());
    }
コード例 #3
0
    private partial ILink <int?> OnTruncate(AbstractObjectName tableName)
    {
        //Verify the table name actually exists.
        var table = DatabaseMetadata.GetTableOrView(tableName);

        //In SQLite, a delete without a where clause is interpreted as a truncate if other conditions are met.
        return(Sql("DELETE FROM " + table.Name.ToQuotedString() + ";").AsNonQuery());
    }
コード例 #4
0
 ObjectDbCommandBuilder <AbstractCommand, AbstractParameter, TArgument> IUpsertHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnInsertOrUpdateObject <TArgument>(AbstractObjectName tableName, TArgument argumentValue, UpsertOptions options)
 {
     return(new SQLiteInsertOrUpdateObject <TArgument>(this, tableName, argumentValue, options));
 }
コード例 #5
0
 DbCommandBuilder <AbstractCommand, AbstractParameter> IInsertBatchHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnInsertBatch <TObject>(AbstractObjectName tableName, IEnumerable <TObject> objects, InsertOptions options)
 {
     return(new SQLiteInsertBatch <TObject>(this, tableName, objects, options));;
 }
コード例 #6
0
    MultipleRowDbCommandBuilder <AbstractCommand, AbstractParameter> IGetByKeyHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnGetByKeyList <TObject, TKey>(AbstractObjectName tableName, ColumnMetadata <AbstractDbType> keyColumn, IEnumerable <TKey> keys) where TObject : class
    {
        var keyList = keys.AsList();

        string where;
        if (keys.Count() > 1)
        {
            where = keyColumn.SqlName + " IN (" + string.Join(", ", keyList.Select((s, i) => "@Param" + i)) + ")";
        }
        else
        {
            where = keyColumn.SqlName + " = @Param0";
        }

        var parameters = new List <SQLiteParameter>();

        for (var i = 0; i < keyList.Count; i++)
        {
            var param = new SQLiteParameter("@Param" + i, keyList[i]);
            if (keyColumn.DbType.HasValue)
            {
                param.DbType = keyColumn.DbType.Value;
            }
            parameters.Add(param);
        }

        return(new MultipleRowDbCommandBuilder <SQLiteCommand, SQLiteParameter, TObject>(new SQLiteTableOrView <TObject>(this, tableName, where, parameters)));
    }
コード例 #7
0
 SqlServerInsertBulk IInsertBulkHelper <SqlServerInsertBulk, AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnInsertBulk(AbstractObjectName tableName, IDataReader dataReader)
 {
     return(new SqlServerInsertBulk(this, tableName, dataReader));
 }
コード例 #8
0
 ObjectDbCommandBuilder <AbstractCommand, AbstractParameter, TArgument> IUpdateDeleteHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnDeleteObject <TArgument>(AbstractObjectName tableName, TArgument argumentValue, DeleteOptions options)
     where TArgument : class
 {
     return(new SQLiteDeleteObject <TArgument>(this, tableName, argumentValue, options));
 }
コード例 #9
0
 IUpdateSetDbCommandBuilder <AbstractCommand, AbstractParameter> IUpdateDeleteSetHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnUpdateSet(AbstractObjectName tableName, object?newValues, UpdateOptions options)
 {
     return(new SQLiteUpdateSet(this, tableName, newValues, options));
 }
コード例 #10
0
 private partial TableDbCommandBuilder <AbstractCommand, AbstractParameter, AbstractLimitOption> OnTableFunction(AbstractObjectName tableFunctionName, object?functionArgumentValue)
 {
     return(new AbstractTableFunction(this, tableFunctionName, functionArgumentValue));
 }
コード例 #11
0
 private partial ScalarDbCommandBuilder <AbstractCommand, AbstractParameter> OnScalarFunction(AbstractObjectName scalarFunctionName, object?argumentValue)
 {
     return(new AbstractScalarFunction(this, scalarFunctionName, argumentValue));
 }
コード例 #12
0
 private partial ProcedureDbCommandBuilder <AbstractCommand, AbstractParameter> OnProcedure(AbstractObjectName procedureName, object?argumentValue)
 {
     return(new AbstractProcedureCall(this, procedureName, argumentValue));
 }
コード例 #13
0
 ObjectDbCommandBuilder <AbstractCommand, AbstractParameter, TArgument> IInsertHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnInsertObject <TArgument>(AbstractObjectName tableName, TArgument argumentValue, InsertOptions options)
     where TArgument : class
 {
     return(new SqlServerInsertObject <TArgument>(this, tableName, argumentValue, options));
 }
コード例 #14
0
    MultipleRowDbCommandBuilder <AbstractCommand, AbstractParameter> IUpdateDeleteByKeyHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnUpdateByKeyList <TArgument, TKey>(AbstractObjectName tableName, TArgument newValues, IEnumerable <TKey> keys, UpdateOptions options)
    {
        var primaryKeys = DatabaseMetadata.GetTableOrView(tableName).PrimaryKeyColumns;

        if (primaryKeys.Count != 1)
        {
            throw new MappingException($"{nameof(UpdateByKeyList)} operation isn't allowed on {tableName} because it doesn't have a single primary key.");
        }

        var keyList        = keys.AsList();
        var columnMetadata = primaryKeys.Single();

        string where;
        if (keys.Count() > 1)
        {
            where = columnMetadata.SqlName + " IN (" + string.Join(", ", keyList.Select((s, i) => "@Param" + i)) + ")";
        }
        else
        {
            where = columnMetadata.SqlName + " = @Param0";
        }

        var parameters = new List <SQLiteParameter>();

        for (var i = 0; i < keyList.Count; i++)
        {
            var param = new SQLiteParameter("@Param" + i, keyList[i]);
            if (columnMetadata.DbType.HasValue)
            {
                param.DbType = columnMetadata.DbType.Value;
            }
            parameters.Add(param);
        }

        return(new SQLiteUpdateSet(this, tableName, newValues, where, parameters, parameters.Count, options));
    }
コード例 #15
0
 MultipleRowDbCommandBuilder <AbstractCommand, AbstractParameter> IUpdateDeleteSetHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnDeleteSet(AbstractObjectName tableName, object filterValue, FilterOptions filterOptions)
 {
     return(new SQLiteDeleteSet(this, tableName, filterValue, filterOptions));
 }
コード例 #16
0
 IUpdateSetDbCommandBuilder <AbstractCommand, AbstractParameter> IUpdateDeleteSetHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnUpdateSet(AbstractObjectName tableName, string updateExpression, object?updateArgumentValue, UpdateOptions options)
 {
     return(new SQLiteUpdateSet(this, tableName, updateExpression, updateArgumentValue, options));
 }
コード例 #17
0
 TableDbCommandBuilder <AbstractCommand, AbstractParameter, AbstractLimitOption, TObject> IFromHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType, AbstractLimitOption> .OnFromTableOrView <TObject>(AbstractObjectName tableOrViewName, string?whereClause, object?argumentValue)
     where TObject : class
 {
     return(new SQLiteTableOrView <TObject>(this, tableOrViewName, whereClause, argumentValue));
 }
コード例 #18
0
 private partial ILink <int?> OnDeleteAll(AbstractObjectName tableName)
 {
     //SQLite determines for itself if a delete all should be interpreted as a truncate.
     return(OnTruncate(tableName));
 }
コード例 #19
0
 TableDbCommandBuilder <AbstractCommand, AbstractParameter, AbstractLimitOption, TObject> IFromHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType, AbstractLimitOption> .OnFromTableOrView <TObject>(AbstractObjectName tableOrViewName, object filterValue, FilterOptions filterOptions)
     where TObject : class
 {
     return(new SQLiteTableOrView <TObject>(this, tableOrViewName, filterValue, filterOptions));
 }
コード例 #20
0
    MultipleRowDbCommandBuilder <AbstractCommand, AbstractParameter> IUpdateDeleteByKeyHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnDeleteByKeyList <TKey>(AbstractObjectName tableName, IEnumerable <TKey> keys, DeleteOptions options)
    {
        var primaryKeys = DatabaseMetadata.GetTableOrView(tableName).PrimaryKeyColumns;

        if (primaryKeys.Count != 1)
        {
            throw new MappingException($"{nameof(DeleteByKeyList)} operation isn't allowed on {tableName} because it doesn't have a single primary key.");
        }

        var keyList        = keys.AsList();
        var columnMetadata = primaryKeys.Single();

        string where;
        if (keys.Count() > 1)
        {
            where = columnMetadata.SqlName + " IN (" + string.Join(", ", keyList.Select((s, i) => "@Param" + i)) + ")";
        }
        else
        {
            where = columnMetadata.SqlName + " = @Param0";
        }

        var parameters = new List <SQLiteParameter>();

        for (var i = 0; i < keyList.Count; i++)
        {
            var param = new SQLiteParameter("@Param" + i, keyList[i]);
            if (columnMetadata.DbType.HasValue)
            {
                param.DbType = columnMetadata.DbType.Value;
            }
            parameters.Add(param);
        }

        var table = DatabaseMetadata.GetTableOrView(tableName);

        if (!AuditRules.UseSoftDelete(table))
        {
            return(new SQLiteDeleteSet(this, tableName, where, parameters, parameters.Count, options));
        }

        UpdateOptions effectiveOptions = UpdateOptions.SoftDelete;

        if (!options.HasFlag(DeleteOptions.CheckRowsAffected))
        {
            effectiveOptions |= UpdateOptions.IgnoreRowsAffected;
        }

        if (options.HasFlag(DeleteOptions.UseKeyAttribute))
        {
            effectiveOptions |= UpdateOptions.UseKeyAttribute;
        }

        return(new SQLiteUpdateSet(this, tableName, null, where, parameters, parameters.Count, effectiveOptions));
    }
コード例 #21
0
    MultipleRowDbCommandBuilder <AbstractCommand, AbstractParameter> IGetByKeyHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnGetByKey <TObject, TKey>(AbstractObjectName tableName, ColumnMetadata <AbstractDbType> keyColumn, TKey key)
        where TObject : class
    {
        string where = keyColumn.SqlName + " = @Param0";

        var parameters = new List <SQLiteParameter>();
        var param      = new SQLiteParameter("@Param0", key);

        if (keyColumn.DbType.HasValue)
        {
            param.DbType = keyColumn.DbType.Value;
        }
        parameters.Add(param);

        return(new SQLiteTableOrView <TObject>(this, tableName, where, parameters));
    }
コード例 #22
0
 MultipleRowDbCommandBuilder <AbstractCommand, AbstractParameter> IUpdateDeleteSetHelper <AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnDeleteSet(AbstractObjectName tableName, string whereClause, object?argumentValue)
 {
     return(new SQLiteDeleteSet(this, tableName, whereClause, argumentValue));
 }
コード例 #23
0
 MySqlInsertBulk IInsertBulkHelper <MySqlInsertBulk, AbstractCommand, AbstractParameter, AbstractObjectName, AbstractDbType> .OnInsertBulk(AbstractObjectName tableName, DataTable dataTable)
 {
     return(new MySqlInsertBulk(this, tableName, dataTable));
 }