/// <summary> /// Update table values using instance as update source and comparator to find which instaces to update /// </summary> /// <param name="connection">Connection Parameter</param> /// <param name="transaction">Transaction Parameter</param> /// <param name="instance">Instance to update with</param> /// <param name="comparator">Instance for which we will create the where clause </param> /// <returns></returns> public static int UpdateValue(DbConnection connection, DbTransaction transaction, object instance, object comparator) { InstanceFilterWrapper instanceWrapper = InstanceFilterWrapper.Wrap(instance); InstanceFilterWrapper comparatorWrapper = InstanceFilterWrapper.Wrap(comparator); return(UpdateValue(connection, transaction, instanceWrapper, comparatorWrapper)); }
/// <example> /// Class whereInstance = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance[Class](); /// whereInstance.Parameter1 = NevValue; /// whereInstance.Parameter2 = ... /// InstanceFilterWrapper wrapper = InstanceFilterWrapper.Wrap(whereInstance,[optinal override params]); /// int result = CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, wrapper); /// </example> /// <param name="connection">Connection parameter</param> /// <param name="transaction">Transaction parameter</param> /// <param name="wrapper">Instance for which to delete</param> /// <returns></returns> public static int Delete(DbConnection connection, DbTransaction transaction, InstanceFilterWrapper wrapper) { try { var initializationSnapshot = GetFieldSnapshot(GetDefaultInstance(wrapper.Instance.GetType())); var currentSnapshot = GetFieldSnapshot(wrapper.Instance); var diff = Diff(initializationSnapshot, currentSnapshot, wrapper.OverrideFields); if (wrapper == null || diff.Count == 0) { return(-1); } diff.Add("IsDeleted", false); string whereClause = CreateWhereClause(diff); string tableName = GetTableName(wrapper.Instance); string query = String.Format("UPDATE {0} SET IsDeleted = 1 WHERE {1}", tableName, whereClause); DbCommand command = connection.CreateCommand(); command.CommandText = query; command.Transaction = transaction; foreach (var key in diff.Keys) { CSV2Core_MySQL.Support.DBSQLSupport.SetParameter(command, key, diff[key]); } return(command.ExecuteNonQuery()); } catch (Exception ex) { //CSV2Core.Logging.DLSystemLog.add(ex); return(-1); } }
/// <example> /// Class instance = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance[Class](); /// instance.Parameter1 = NevValue; /// instance.Parameter2 = ... /// InstanceFilterWrapper wrapper = InstanceFilterWrapper.Wrap(instance,[optinal override params]); /// int count = CSV2Core_MySQL.Support.SQLClassFilter.Count(Connection, Transaction, wrapper); /// </example> /// <param name="connection">Connection parameter</param> /// <param name="transaction">Transaction parameter</param> /// <param name="wrapper">InstanceWrapper for which to delete</param> /// <returns></returns> public static int Count(DbConnection connection, DbTransaction transaction, InstanceFilterWrapper wrapper) { try { var initializationSnapshot = GetFieldSnapshot(GetDefaultInstance(wrapper.Instance.GetType())); var currentSnapshot = GetFieldSnapshot(wrapper.Instance); var diff = Diff(initializationSnapshot, currentSnapshot, wrapper.OverrideFields); if (wrapper == null || diff.Count == 0) { return(0); } string whereClause = CreateWhereClause(diff); string tableName = GetTableName(wrapper.Instance); string query = String.Format("SELECT COUNT(*) as Count FROM {0} WHERE {1}", tableName, whereClause); DbCommand command = connection.CreateCommand(); command.CommandText = query; command.Transaction = transaction; foreach (var key in diff.Keys) { CSV2Core_MySQL.Support.DBSQLSupport.SetParameter(command, key, diff[key]); } var reader = command.ExecuteReader(); reader.Read(); int resultCount = reader.GetInt32(0); reader.Close(); return(resultCount); } catch (Exception ex) { //CSV2Core.Logging.DLSystemLog.add(ex); return(0); } }
/// <summary> /// Update specific ORM class with specific values /// </summary> /// <example> /// Class instance = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance[Class](); /// instance.Parameter1 = NevValue; /// InstanceFilterWrapper instanceWrap = InstanceFilterWrapper.Wrap(instance,[optinal override params]); /// int result = CSV2Core_MySQL.Support.SQLClassFilter.UpdateValue(Connection, Transaction, instanceWrap, comparatorWrap); /// </example> /// <param name="connection">Connection parameter</param> /// <param name="transaction">Transaction parameter</param> /// <param name="instance">Instance to update with</param> /// <param name="comparator">Instance for which we will create the where clause </param> /// <returns></returns> public static int UpdateValue(DbConnection connection, DbTransaction transaction, InstanceFilterWrapper instance, InstanceFilterWrapper comparator) { try { var initializationSnapshot = GetFieldSnapshot(GetDefaultInstance(comparator.Instance.GetType())); var currentWhereSnapshot = GetFieldSnapshot(comparator.Instance); var diffWhere = Diff(initializationSnapshot, currentWhereSnapshot, comparator.OverrideFields); if (comparator == null || diffWhere.Count == 0) { return(-1); } diffWhere.Add("IsDeleted", false); string whereClause = CreateWhereClause(diffWhere, "P"); string tableName = GetTableName(comparator.Instance); var currentUpdateSnapshot = GetFieldSnapshot(instance.Instance); var diffUpdate = Diff(initializationSnapshot, currentUpdateSnapshot, instance.OverrideFields); if (instance == null || diffUpdate.Count == 0) { return(-1); } string updateClause = CreateUpdateClause(diffUpdate); string query = String.Format("UPDATE {0} SET {1} WHERE {2}", tableName, updateClause, whereClause); DbCommand command = connection.CreateCommand(); command.CommandText = query; command.Transaction = transaction; foreach (var key in diffUpdate.Keys) { CSV2Core_MySQL.Support.DBSQLSupport.SetParameter(command, key, diffUpdate[key]); } foreach (var key in diffWhere.Keys) { CSV2Core_MySQL.Support.DBSQLSupport.SetParameter(command, "P" + key, diffWhere[key]); } return(command.ExecuteNonQuery()); } catch (Exception ex) { //CSV2Core.Logging.DLSystemLog.add(ex); return(-1); } }
/// <example> /// Class instance = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance[Class](); /// instance.Parameter1 = NevValue; /// instance.Parameter2 = ... /// bool isExists = CSV2Core_MySQL.Support.SQLClassFilter.Exists(Connection, Transaction, instance); /// </example> /// <param name="connection">Connection parameter</param> /// <param name="transaction">Transaction parameter</param> /// <param name="wrapper">InstanceWrapper for which to delete</param> /// <returns></returns> public static bool Exists(DbConnection connection, DbTransaction transaction, object instance) { return(Exists(connection, transaction, InstanceFilterWrapper.Wrap(instance))); }
/// <example> /// Class whereInstance = CSV2Core_MySQL.Support.SQLClassFilter.GetDefaultInstance[Class](); /// whereInstance.Parameter1 = NevValue; /// whereInstance.Parameter2 = ... /// int result = CSV2Core_MySQL.Support.SQLClassFilter.Delete(Connection, Transaction, whereInstance); /// </example> /// <param name="connection">Connection parameter</param> /// <param name="transaction">Transaction parameter</param> /// <param name="instance">Instance for which to delete</param> /// <returns></returns> public static int Delete(DbConnection connection, DbTransaction transaction, object instance) { return(Delete(connection, transaction, InstanceFilterWrapper.Wrap(instance))); }