using System.Data;
using System.Data.Common;
using JetBrains.Annotations;
namespace Npgsql
{
///
/// Represents the method that handles the RowUpdated events.
///
/// The source of the event.
/// A NpgsqlRowUpdatedEventArgs that contains the event data.
public delegate void NpgsqlRowUpdatedEventHandler(object sender, NpgsqlRowUpdatedEventArgs e);
///
/// Represents the method that handles the RowUpdating events.
///
/// The source of the event.
/// A NpgsqlRowUpdatingEventArgs that contains the event data.
public delegate void NpgsqlRowUpdatingEventHandler(object sender, NpgsqlRowUpdatingEventArgs e);
///
/// This class represents an adapter from many commands: select, update, insert and delete to fill Datasets.
///
[System.ComponentModel.DesignerCategory("")]
public sealed class NpgsqlDataAdapter : DbDataAdapter
{
///
/// Row updated event.
///
[PublicAPI]
public event NpgsqlRowUpdatedEventHandler? RowUpdated;
///
/// Row updating event.
///
public event NpgsqlRowUpdatingEventHandler? RowUpdating;
///
/// Default constructor.
///
public NpgsqlDataAdapter() {}
///
/// Constructor.
///
///
public NpgsqlDataAdapter(NpgsqlCommand selectCommand)
=> SelectCommand = selectCommand;
///
/// Constructor.
///
///
///
public NpgsqlDataAdapter(string selectCommandText, NpgsqlConnection selectConnection)
: this(new NpgsqlCommand(selectCommandText, selectConnection)) {}
///
/// Constructor.
///
///
///
public NpgsqlDataAdapter(string selectCommandText, string selectConnectionString)
: this(selectCommandText, new NpgsqlConnection(selectConnectionString)) {}
///
/// Create row updated event.
///
protected override RowUpdatedEventArgs CreateRowUpdatedEvent(DataRow dataRow, IDbCommand command,
System.Data.StatementType statementType,
DataTableMapping tableMapping)
=> new NpgsqlRowUpdatedEventArgs(dataRow, command, statementType, tableMapping);
///
/// Create row updating event.
///
protected override RowUpdatingEventArgs CreateRowUpdatingEvent(DataRow dataRow, IDbCommand command,
System.Data.StatementType statementType,
DataTableMapping tableMapping)
=> new NpgsqlRowUpdatingEventArgs(dataRow, command, statementType, tableMapping);
///
/// Raise the RowUpdated event.
///
///
protected override void OnRowUpdated(RowUpdatedEventArgs value)
{
//base.OnRowUpdated(value);
if (value is NpgsqlRowUpdatedEventArgs args)
RowUpdated?.Invoke(this, args);
//if (RowUpdated != null && value is NpgsqlRowUpdatedEventArgs args)
// RowUpdated(this, args);
}
///
/// Raise the RowUpdating event.
///
///
protected override void OnRowUpdating(RowUpdatingEventArgs value)
{
if (value is NpgsqlRowUpdatingEventArgs args)
RowUpdating?.Invoke(this, args);
}
///
/// Delete command.
///
public new NpgsqlCommand DeleteCommand
{
get => (NpgsqlCommand)base.DeleteCommand;
set => base.DeleteCommand = value;
}
///
/// Select command.
///
public new NpgsqlCommand SelectCommand
{
get => (NpgsqlCommand)base.SelectCommand;
set => base.SelectCommand = value;
}
///
/// Update command.
///
public new NpgsqlCommand UpdateCommand
{
get => (NpgsqlCommand)base.UpdateCommand;
set => base.UpdateCommand = value;
}
///
/// Insert command.
///
public new NpgsqlCommand InsertCommand
{
get => (NpgsqlCommand)base.InsertCommand;
set => base.InsertCommand = value;
}
}
#pragma warning disable 1591
public class NpgsqlRowUpdatingEventArgs : RowUpdatingEventArgs
{
public NpgsqlRowUpdatingEventArgs(DataRow dataRow, IDbCommand command, System.Data.StatementType statementType,
DataTableMapping tableMapping)
: base(dataRow, command, statementType, tableMapping) {}
}
public class NpgsqlRowUpdatedEventArgs : RowUpdatedEventArgs
{
public NpgsqlRowUpdatedEventArgs(DataRow dataRow, IDbCommand command, System.Data.StatementType statementType,
DataTableMapping tableMapping)
: base(dataRow, command, statementType, tableMapping) {}
}
#pragma warning restore 1591
}