Ошибка C #: обновление требует действительной команды обновления при передаче коллекции данных с измененными строками?

Я знаю, что эта ошибка/вопрос была опубликована много раз. Я уже некоторое время занимаюсь исследованиями и до сих пор не могу понять, как правильно обновить мою базу данных с изменениями, внесенными в мою таблицу данных.

У меня есть DataTable, заполненная информацией из двух разных таблиц в моей базе данных. Однако изменения вносятся только в столбцы, которые поступают из 1 таблицы. Вторая таблица мне нужна JOIN для расчетов.

Поэтому, когда я пытаюсь обновить свою базу данных, изменения будут внесены только в 1 таблицу. Мне все еще нужен ado.net, поэтому мне трудно применить правильный способ применения этих изменений на основе информации из MSDN и StackOverflow.

Это код, который у меня есть:

 using (SqlCommand cmd = new SqlCommand("SELECT INCIDENT_NO, report_dt,MIN(theStart) as The_Start, Resolved_DT, Resolution_TIME, resolution_met,response_met,max_response_time,max_resolution_time,impact FROM TICKET_REPORT JOIN TimeTracker ON Incident_NO=theTask WHERE Resolved_DT != '' GROUP BY INCIDENT_NO,report_dt,Resolved_DT,Resolution_Time, resolution_met,response_met,max_response_time,max_resolution_time,impact", sqlConn))
            {
                var calc = new Calculation(holidays, new OpenHours("09:00;17:00"));
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                dtResolution.Columns.Clear();
                dtResolution.Clear();
                da.Fill(dtResolution);

               //-------Making calculation changes to columns from one table in datatable here---------
                try
                {
                    da.Update(dtResolution);
                    Console.WriteLine("Update successful");
                }
                catch(Exception ex)
                {
                    Console.WriteLine("Updated failed");
                    Console.WriteLine(ex.Message);
                }
                da.Dispose();
            }

Я полагал, что CommandBuilder создаст для меня команду обновления, но MSDN говорит, что я могу использовать CommandBuilder только в том случае, если мой оператор SELECT включает только 1 таблицу, а у меня их две.

Другие ответы StackOverflow говорят, что если я использую JOIN, я сам по себе.

Как я могу правильно выполнить это обновление? Могу ли я сделать это на С#? Должен ли я вместо этого передать таблицу данных хранимой процедуре в sqlserver?


person Reeggiie    schedule 13.01.2016    source источник


Ответы (1)


Мне было проще просто создать оператор слияния внутри хранимой процедуры и просто передать данные в хранимую процедуру.

person Reeggiie    schedule 13.01.2016
comment
добавьте решение пожалуйста - person Kahn Kah; 19.07.2017