vmp5 Ответов: 1

Как спровоцировать deletedrowinaccessibleexception


Привет,

Может ли кто-нибудь предоставить образец, который бросает DeletedRowInaccessibleExceptionН?

Фон:
Я должен узнать о невоспроизводимой ошибке (а я не большой эксперт в таблицах данных). В моем производственном коде я однажды получил DeletedRowInaccessibleException где-то в большом кодовом блоке (и я не знаю номера строки, так как мы не предоставляем pdb-файлы). Поэтому мой первый подход состоит в том, чтобы найти образец, который производит исключение (с которым я в настоящее время уже терплю неудачу). Все, что я получаю до сих пор, это Исключение RowNotInTableException

Я использую .net 4.6.2

Заранее большое спасибо

Что я уже пробовал:

void test()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("col1", typeof(string));
            dt.Columns.Add("col2", typeof(long));
            DataRow dr1 = dt.NewRow();
            dt.Rows.Add(dr1);
            dr1.ItemArray = new object[] { "a", 123L };
            DataRow dr2 = dt.NewRow();
            dt.Rows.Add(dr2);
            dr2.ItemArray = new object[] { "b", 456L };
            dr1.Delete();
            Console.WriteLine("value 1/1: {0}", dr1.ItemArray[0]); //<-- throws RowNotInTableException. What do I need to do to get DeletedRowInaccessibleException?
        }

1 Ответов

Рейтинг:
12

Karthik_Mahalingam

Вы получите это исключение, когда попытаетесь получить доступ к удаленной строке из Typed Dataset

Цитата:
Что мне нужно сделать, чтобы получить DeletedRowInaccessibleException?


Щелкните правой кнопкой мыши на проект -и GT; добавить -> Новый элемент -&ГТ; сведения -&ГТ; набор данных -и GT; имя его как DataSet1.xsd
в окне конструктора - & gt; щелкните правой кнопкой мыши - & gt; Добавить - & gt; DataTable - & gt; назовите его как DataTable1 - > щелкните правой кнопкой мыши заголовок таблицы и - & gt; добавьте - & gt; 2 столбца ( назовите его как Column1 и Column2 )- > Save

теперь выполните этот код

static void Main(string[] args)
        {
            try
            {
                DataSet1 ds = new DataSet1();
                ds.DataTable1.AddDataTable1Row("1", "One");
                ds.DataTable1.AddDataTable1Row("2", "Two");
                ds.AcceptChanges();
                ds.DataTable1.Rows[0].Delete();
                foreach (DataSet1.DataTable1Row row in ds.DataTable1.Rows)
                {
                    string temp = row.Column1;
                } 

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                 
            }
 
        }