2014-12-25 2 views
-1

То, что я пытаюсь сделать, это отредактировать соответствующую строку и изменить значение для столбца, но оно возвращает значение null. Я считаю, что это связано с тем, что я сохраняю запрос к объекту, потому что, если я напрямую обращаюсь к запросу, он всегда обрабатывает запрос каждый раз. Каков наилучший способ справиться с этим?Datatable.GetChanges() всегда возвращает null

using (SymbolsTableAdapter symbolAdapter = new SymbolsTableAdapter()) 
using (Dataset.SymbolsDataTable symbolTable = new Dataset.SymbolsDataTable()) 
{ 
    symbolAdapter.Fill(symbolTable); 

    foreach (var error in errors) 
    { 
     var query = from c in symbolTable 
        where c.Symbol == error.Key && c.Market == error.Value 
        select c; 

     Dataset.SymbolsRow row = query.AsParallel().FirstOrDefault(); 

     if (row != null) 
     { 
      row.isUnderReview = true; 
     } 
    } 

    // now save 
    if (symbolTable.GetChanges() != null) 
    { 
     symbolTable.AcceptChanges(); 
    } 
} 
+0

Что такое ошибки ваш код ? Это происходит внутри цикла? – dotnetstep

+0

@dotnetstep Он никогда не получает никаких ошибок, но он никогда не попадает в строку, которая говорит symbolTable.AcceptChanges(); – user3610374

+0

Поскольку он никогда не заходит внутрь цикла, поэтому ваша таблица не изменяется после загрузки, поэтому никаких изменений не обнаружено, поэтому они не смогут принять принятые изменения. – dotnetstep

ответ

0

Хорошо, я не знаю, почему AcceptChanges фактически не делает ничего, но я изменил код немного, чтобы ниже, и это прекрасно работает для тех, кто в будущем

Dataset.SymbolsDataTable tempSymbolsTable = new Dataset.SymbolsDataTable(); 
tempSymbolsTable = (Dataset.SymbolsDataTable)symbolTable.GetChanges(); 

       if (tempSymbolsTable != null) 
       { 
        symbolAdapter.Update(tempSymbolsTable); 
        tempSymbolsTable.Dispose(); 
       } 
Смежные вопросы