Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Еще раз про нарушение параллелизма и SqlDataAdapter.Update(dataSet)  [new]
mdm114
Member

Откуда:
Сообщений: 120
есть dataset, которая заполняется sqldataAdapter -ом. Внутри адаптера код

SELECT id, family, name, number,.....FROM traktor WHERE(number='Huynday220') AND (YEAR(dat)='2014') AND (MONTH(dat)='2')

private void Form1_Load(object sender, EventArgs e)
        {

            sqlDataAdapter1.Fill(dataSet11);
        }


Все работает ок. Вношу вручную изменения в dataGridView. потом делаю sqlDataAdapter1.Update(dataSet11); Все ок!

Теперь все тоже самое, но следующим образом

string sel1 = "SELECT id, family, name, number, ..... FROM traktor WHERE(number='{0}') AND (YEAR(dat)='{1}') AND (MONTH(dat)='{2}')  ORDER BY dat " ;


sqlDataAdapter1.SelectCommand.CommandText = String.Format(sel1, "Huynday220", 2014, 2);
   
            sqlDataAdapter1.Fill(dataSet11);

Все заполняется, НО! при попытке внести измения и сохранить(sqlDataAdapter1.Update(dataSet11)) выскакивает ошибка "Нарушение параллелизма. Update command затронула 0 из ожидаемых 1 записей.

Собственно вопрос, с чем это связано? Появилось это после перехода на Visual Studio 2012. В 2008 вроде все работало норм
16 мар 14, 18:45    [15733801]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про нарушение параллелизма и SqlDataAdapter.Update(dataSet)  [new]
Lelouch
Member

Откуда: Москва
Сообщений: 1881
mdm114,

текст update запроса напишите руками...
16 мар 14, 22:12    [15734579]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про нарушение параллелизма и SqlDataAdapter.Update(dataSet)  [new]
mdm114
Member

Откуда:
Сообщений: 120
поможет? Честно говоря, не разу не приходилось, всегда пользовался встроенным. Ща буду смотреть как это делается..
17 мар 14, 09:42    [15736061]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про нарушение параллелизма и SqlDataAdapter.Update(dataSet)  [new]
mdm114
Member

Откуда:
Сообщений: 120
А как поймать строку или строки, в которые необходимо вносить изменения?

string str22 = "UPDATE traktor SET proch = @proch";
          sqlDataAdapter1.UpdateCommand.CommandText = String.Format(str22);        
sqlDataAdapter1.Update(dataSet11);


А то при таком подходе, вставляет одну и ту же запись во все строки. Я заранее извиняюсь за ламерский вопрос. Просто во всех книжках, которые я просмотрел, все внимание уделяется исключительно команде SELECT. Может кто кусок кода даст?
17 мар 14, 20:09    [15741193]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про нарушение параллелизма и SqlDataAdapter.Update(dataSet)  [new]
igr_ok
Member

Откуда:
Сообщений: 170
mdm114
А как поймать строку или строки, в которые необходимо вносить изменения?

string str22 = "UPDATE traktor SET proch = @proch";
          sqlDataAdapter1.UpdateCommand.CommandText = String.Format(str22);        
sqlDataAdapter1.Update(dataSet11);


А то при таком подходе, вставляет одну и ту же запись во все строки. Я заранее извиняюсь за ламерский вопрос. Просто во всех книжках, которые я просмотрел, все внимание уделяется исключительно команде SELECT. Может кто кусок кода даст?

При запуске дизайнера напишите в команде SELECT "select * from traktor" и посмотрите,какие у вас сформируются команды для insert,update,delete. Это то, что вам надо. Их можно просто оставить, а SELECT изменить
19 мар 14, 11:38    [15751438]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про нарушение параллелизма и SqlDataAdapter.Update(dataSet)  [new]
mdm114
Member

Откуда:
Сообщений: 120
igr_ok,

не совсем понял. Т.е проблема не в Update, а в неправильной команде Select ?
19 мар 14, 15:51    [15753602]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про нарушение параллелизма и SqlDataAdapter.Update(dataSet)  [new]
igr_ok
Member

Откуда:
Сообщений: 170
mdm114
igr_ok,

не совсем понял. Т.е проблема не в Update, а в неправильной команде Select ?
Проблема в Update. Но формируется он на основании вашего Select. Если у вас в таблице нет первичного ключа или в запросе больше одной таблицы, Update вообще не сгенерируется. Тогда его нужно писать вручную. В вашем случае он будет выглядеть как-то так
UPDATE traktor SET proch = @proch where id=@id
А если код будет создан дизайнером, да еще с использованием оптимистической блокировки, то будет много букв :) Но при этом всё будет работать и вам нужно будет только вызывать sqlDataAdapter1.Update
19 мар 14, 20:25    [15755335]     Ответить | Цитировать Сообщить модератору
 Re: Еще раз про нарушение параллелизма и SqlDataAdapter.Update(dataSet)  [new]
mdm114
Member

Откуда:
Сообщений: 120
спасибо, буду пытаться разбираться...
19 мар 14, 20:37    [15755389]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить