Я читал файл XLS с помощью ExcelDataReader
и положить полный DataTable
в Session
переменной со следующим кодомПочему переменная Session получает обновление?
DataSet result = excelReader.AsDataSet(true,Convert.ToInt32(e.Parameter), 20);
if (result.Tables.Count > 0)
{
if (result.Tables[0].Rows.Count > 0)
{
Session["CellDirData"] = result.Tables[0];
}
}
В некоторой другой функции я получаю эту DataTable
из Session
переменной, используя следующий код
DataTable dtTemp = (DataTable) Session["CellDirData"];
dtTemp.Rows.RemoveAt(0); // Removing first row from local variable dtTemp
Когда я удаляю первую строку из локальной переменной dtTemp
, она также обновляет переменную Session
, то есть теперь как dtTemp
, так и Session["CellDirData"]
имеет 19 строк.
Вопрос: почему Session
получить обновление, пока я играю только с локальной переменной?
Проверьте порядок событий и места, где вы устанавливаете сеанс. – Amit
Пожалуйста, ознакомьтесь с http://www.albahari.com/valuevsreftypes.aspx. Если вам нужна копия, используйте [DataTable.Copy] (http://msdn.microsoft.com/en-us/library/system.data.datatable .copy% 28v = vs.110% 29.aspx) –
@SriramSakthivel приветствую ваше предложение. Но здесь я не устанавливаю переменную сессии, которая может вызвать обновление из-за изменения ссылочной переменной. Я получаю сессию в локальной переменной. –