/// <summary> /// Adiciona nomes de <c>stored procedures</c> às <see cref="DataTable"/>s especificadas, /// que serão utilizados no <see cref="CommitChanges"/>, ao invés de gerar SQL padrão. /// </summary> /// <param name="prefixo">O prefixo das <c>stored procedures</c>.</param> /// <param name="ops">As operações para as quais deve ser adicionado o nome de <c>stored procedure</c></param> /// <param name="tables">As tabelas onde as <c>stored procedures</c> serão atribuídas</param> /// <remarks> /// Os nomes de <c>stored procedure</c> adicionados terão o seguinte formato: /// /// <list type="bullet"> /// <item> /// <strong>Insert: </strong> /// <paramref name="prefixo"/> INS_ <c>nome da tabela</c> /// </item> /// <item> /// <strong>Update: </strong> /// <paramref name="prefixo"/> UPD_ <c>nome da tabela</c> /// </item> /// <item> /// <strong>Delete: </strong> /// <paramref name="prefixo"/> DEL_ <c>nome da tabela</c> /// </item> /// </list> /// /// As <c>stored procedures</c> devem ter um formato específico: /// <list type="definition"> /// <item> /// <term>INSERT</term> /// <description> /// Deve ter um parâmetro para cada campo da tabela, com exceção de valores /// <see cref="DataColumn.AutoIncrement"/>, e um parâmetro /// <see cref="ParameterDirection.Output"/> para o retorno dos valores /// <see cref="DataColumn.AutoIncrement"/>. /// </description> /// </item> /// <item> /// <term>DELETE</term> /// <description> /// Deve ter um parâmetro para cada campo que compõe a chave primária da tabela. /// </description> /// </item> /// <item> /// <term>UPDATE</term> /// <description> /// Dele ter um parâmetro para cada campo, seja chave primária ou não. /// </description> /// </item> /// </list> /// </remarks> protected void AddStoredProcedureForCommiting(string prefixo, AdpCommandOperation ops, params DataTable[] tables) { foreach (DataTable dt in tables) { string fmt = prefixo + "{0}_" + dt.TableName; if ((ops & AdpCommandOperation.Insert) != 0) { SetStoredProcedureForCommiting(dt, AdpCommandOperation.Insert, String.Format(fmt, "INS")); } if ((ops & AdpCommandOperation.Update) != 0) { SetStoredProcedureForCommiting(dt, AdpCommandOperation.Update, String.Format(fmt, "UPD")); } if ((ops & AdpCommandOperation.Delete) != 0) { SetStoredProcedureForCommiting(dt, AdpCommandOperation.Delete, String.Format(fmt, "DEL")); } } }
/// <summary> /// Retorna o nome da <c>stored procedure</c> atribuída à <see cref="DataTable"/> /// especificada em <paramref name="dt"/>. /// </summary> /// <param name="dt">A <see cref="DataTable"/></param> /// <param name="op">A operação, conforme <see cref="AdpCommandOperation"/></param> /// <returns>O nome da <c>stored procedure</c>, ou null.</returns> protected string GetStoredProcedureForCommiting(DataTable dt, AdpCommandOperation op) { return(dt.ExtendedProperties["storedproc_" + op] as string); }
/// <summary> /// Atribui o nome de <c>stored procedures</c> à <see cref="DataTable"/> especificada. /// A <c>stored procedure</c> será utilizada no <see cref="CommitChanges"/>, ao invés /// da geração de SQL padrão. /// </summary> /// <param name="dt">A <see cref="DataTable"/></param> /// <param name="op">A operação, conforme <see cref="AdpCommandOperation"/></param> /// <param name="procName">O nome da <c>stored procedure</c></param> /// <remarks> /// As <c>stored procedures</c> devem ter um formato específico: /// <list type="definition"> /// <item> /// <term>INSERT</term> /// <description> /// Deve ter um parâmetro para cada campo da tabela, com exceção de valores /// <see cref="DataColumn.AutoIncrement"/>, e um parâmetro /// <see cref="ParameterDirection.Output"/> para o retorno dos valores /// <see cref="DataColumn.AutoIncrement"/>. /// </description> /// </item> /// <item> /// <term>DELETE</term> /// <description> /// Deve ter um parâmetro para cada campo que compõe a chave primária da tabela. /// </description> /// </item> /// <item> /// <term>UPDATE</term> /// <description> /// Dele ter um parâmetro para cada campo, seja chave primária ou não. /// </description> /// </item> /// </list> /// </remarks> protected void SetStoredProcedureForCommiting(DataTable dt, AdpCommandOperation op, string procName) { dt.ExtendedProperties["storedproc_" + op] = procName; }
/// <summary> /// Retorna o nome da <c>stored procedure</c> atribuída à <see cref="DataTable"/> /// especificada em <paramref name="dt"/>. /// </summary> /// <param name="dt">A <see cref="DataTable"/></param> /// <param name="op">A operação, conforme <see cref="AdpCommandOperation"/></param> /// <returns>O nome da <c>stored procedure</c>, ou null.</returns> protected string GetStoredProcedureForCommiting(DataTable dt, AdpCommandOperation op) { return dt.ExtendedProperties["storedproc_"+op] as string; }
/// <summary> /// Atribui o nome de <c>stored procedures</c> à <see cref="DataTable"/> especificada. /// A <c>stored procedure</c> será utilizada no <see cref="CommitChanges"/>, ao invés /// da geração de SQL padrão. /// </summary> /// <param name="dt">A <see cref="DataTable"/></param> /// <param name="op">A operação, conforme <see cref="AdpCommandOperation"/></param> /// <param name="procName">O nome da <c>stored procedure</c></param> /// <remarks> /// As <c>stored procedures</c> devem ter um formato específico: /// <list type="definition"> /// <item> /// <term>INSERT</term> /// <description> /// Deve ter um parâmetro para cada campo da tabela, com exceção de valores /// <see cref="DataColumn.AutoIncrement"/>, e um parâmetro /// <see cref="ParameterDirection.Output"/> para o retorno dos valores /// <see cref="DataColumn.AutoIncrement"/>. /// </description> /// </item> /// <item> /// <term>DELETE</term> /// <description> /// Deve ter um parâmetro para cada campo que compõe a chave primária da tabela. /// </description> /// </item> /// <item> /// <term>UPDATE</term> /// <description> /// Dele ter um parâmetro para cada campo, seja chave primária ou não. /// </description> /// </item> /// </list> /// </remarks> protected void SetStoredProcedureForCommiting(DataTable dt, AdpCommandOperation op, string procName) { dt.ExtendedProperties["storedproc_"+op] = procName; }
/// <summary> /// Adiciona nomes de <c>stored procedures</c> às <see cref="DataTable"/>s especificadas, /// que serão utilizados no <see cref="CommitChanges"/>, ao invés de gerar SQL padrão. /// </summary> /// <param name="prefixo">O prefixo das <c>stored procedures</c>.</param> /// <param name="ops">As operações para as quais deve ser adicionado o nome de <c>stored procedure</c></param> /// <param name="tables">As tabelas onde as <c>stored procedures</c> serão atribuídas</param> /// <remarks> /// Os nomes de <c>stored procedure</c> adicionados terão o seguinte formato: /// /// <list type="bullet"> /// <item> /// <strong>Insert: </strong> /// <paramref name="prefixo"/> INS_ <c>nome da tabela</c> /// </item> /// <item> /// <strong>Update: </strong> /// <paramref name="prefixo"/> UPD_ <c>nome da tabela</c> /// </item> /// <item> /// <strong>Delete: </strong> /// <paramref name="prefixo"/> DEL_ <c>nome da tabela</c> /// </item> /// </list> /// /// As <c>stored procedures</c> devem ter um formato específico: /// <list type="definition"> /// <item> /// <term>INSERT</term> /// <description> /// Deve ter um parâmetro para cada campo da tabela, com exceção de valores /// <see cref="DataColumn.AutoIncrement"/>, e um parâmetro /// <see cref="ParameterDirection.Output"/> para o retorno dos valores /// <see cref="DataColumn.AutoIncrement"/>. /// </description> /// </item> /// <item> /// <term>DELETE</term> /// <description> /// Deve ter um parâmetro para cada campo que compõe a chave primária da tabela. /// </description> /// </item> /// <item> /// <term>UPDATE</term> /// <description> /// Dele ter um parâmetro para cada campo, seja chave primária ou não. /// </description> /// </item> /// </list> /// </remarks> protected void AddStoredProcedureForCommiting(string prefixo, AdpCommandOperation ops, params DataTable[] tables) { foreach (DataTable dt in tables) { string fmt = prefixo + "{0}_" + dt.TableName; if ((ops & AdpCommandOperation.Insert) != 0) SetStoredProcedureForCommiting(dt, AdpCommandOperation.Insert, String.Format(fmt, "INS")); if ((ops & AdpCommandOperation.Update) != 0) SetStoredProcedureForCommiting(dt, AdpCommandOperation.Update, String.Format(fmt, "UPD")); if ((ops & AdpCommandOperation.Delete) != 0) SetStoredProcedureForCommiting(dt, AdpCommandOperation.Delete, String.Format(fmt, "DEL")); } }