Я думаю, что эта проблема связана с проблемой создания экземпляра значения / ссылки в объектно-ориентированных языках, таких как C #. Но я новичок и не знаю, как исправить ситуацию.
У меня есть метод с этим фрагментом кода:
List<CSpropr> listActionpropr = CSpropr.searchList(actionCondition); // Get a list of all records of table PROPR for the 'actioncondition' specified
// For each record...
foreach (CSpropr instance in listActionpropr)
{
instance.ValName = "John";
instance.ValPhone = 323234232;
instance.update(); // This make and UPDATE of the record in DB
}
Позже в том же методе я хочу использовать первую версию listActionpropr перед обновлением. Сделать этакий откат. Но когда я повторяю переменную listActionpropr, я получаю список записей с изменениями в значениях Name и Phone. Например:
foreach (CSApropr instance1 in listActionpropr )
{
instance1.update();
}
Есть ли элегантный способ сохранить значение без создания нового поиска для другой переменной? Нравится:
List<CSpropr> listActionpropr = CSpropr.searchList(actionCondition); // Get a list of all records of table PROPR for the 'actioncondition' specified
List<CSpropr> preservedList = CSpropr.searchList(actionCondition); // Get a list of all records of table PROPR for the 'actioncondition' specified
// For each record...
foreach (CSpropr instance in listActionpropr)
{
instance.ValName = "John";
instance.ValPhone = 323234232;
instance.update(); // This make and UPDATE of the record in DB
}
....
foreach (CSApropr instance1 in preservedList )
{
instance1.update();
}
searchList()
. Если он всегда возвращает новые объекты, вы можете делать то, что написали. Если он всегда возвращает одни и те же объекты, то нет, вы не можете сделать это так просто. Это полностью зависит от реализации. - person Sami Kuhmonen   schedule 21.04.2015CSpropr.searchList
будет возвращать список новых CSpropr каждый раз, когда он вызывается. - person Zohar Peled   schedule 21.04.2015