public T SaveUpdateBusinessObject <T>(T businessObject) where T : class, IBaseObject { var table = GetTableName <T>(); var properties = businessObject.GetType().GetProperties().Where( prop => Attribute.IsDefined(prop, typeof(FieldMappingForMainTableAttribute))); if (properties.Any()) { var propertyNamesAndValues = SqlQueryProvider.GetPropertyNamesForDBColumnsAndValuesForUpdate <T>(properties, businessObject); string query = SqlQueryProvider.UpdateBusinessObject(table, propertyNamesAndValues, businessObject.ObjectID.ToString()); using (SqlConnection conn = new SqlConnection(Configuration.DefaultConnectionString)) using (SqlCommand cmd = new SqlCommand(query, conn)) { conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } } return(SelectGetBusinessObjectAfterSave <T>(businessObject, table, businessObject.ObjectID)); }