public static async Task DeleteAsync <TEntity>(this DapperHybridContext context, string schema, string table, Expression <Func <TEntity, bool> > filterExpression) { var filterParameters = new GeneratorContext(); var connection = context.Database.GetDbConnection(); var deleteStatement = context.CreateSqlGenerator <TEntity>() .Delete( schema, table, filterExpression ); var parameters = new DynamicParameters(); foreach (var parameter in deleteStatement.Params) { parameters.Add(parameter.Key, parameter.Value); } await connection.ExecuteAsync( deleteStatement.Statement, parameters, transaction : context.Database.CurrentTransaction?.GetDbTransaction() ) .ConfigureAwait(false); }
public static Task DeleteAsync <TEntity>(this DapperHybridContext context, Expression <Func <TEntity, bool> > filterExpression) { var entityType = context.Model.FindEntityType(typeof(TEntity)); if (entityType == null) { throw new InvalidOperationException($"Entity of type {typeof(TEntity).FullName} is not registered in DbContext. Use overload with table name and schema"); } return(DeleteAsync(context, entityType.GetSchema(), entityType.GetTableName(), filterExpression)); }
public static async Task InsertAsync <TEntity>(this DapperHybridContext context, string schema, string table, TEntity entity) { var connection = context.Database.GetDbConnection(); var parameters = new MappedDynamicParameters(entity); var statement = context.CreateSqlGenerator <TEntity>().Insert(schema, table, parameters.ColumnToParameterMapping); await connection.ExecuteAsync( statement.Statement, parameters, transaction : context.Database.CurrentTransaction?.GetDbTransaction() ) .ConfigureAwait(false); }
public static async Task InsertAsync <TEntity>(this DapperHybridContext context, TEntity entity) { var connection = context.Database.GetDbConnection(); var entityType = context.Model.FindEntityType(typeof(TEntity)); if (entityType == null) { throw new InvalidOperationException($"Entity of type {typeof(TEntity).FullName} is not registered in DbContext. Use overload with table name and schema"); } var parameters = context.GetParameters(entity); var schema = entityType.GetSchema(); var table = entityType.GetTableName(); var statement = context.CreateSqlGenerator <TEntity>().Insert(schema, table, parameters.ColumnToParameterMapping); await connection.ExecuteAsync( statement.Statement, parameters, transaction : context.Database.CurrentTransaction?.GetDbTransaction()) .ConfigureAwait(false); }