#c# #dataset
#c# #набор данных
Вопрос:
Привет everone
У меня есть функция
public void RemoveStock(string tickerName) {
int key = this.getKeyFromtickerName(tickerName);
foreach (var item in listingDataTable.Where(
x => x.stock == key).ToList()) {
listingDataTable.RemoveListingRow(item);
}
listingTa.Update(listingDataTable);
}
Определения:
listingDataTable = new stockDataSet.ListingDataTable();
listingTa = new stockDataSetTableAdapters.ListingTableAdapter();
Тип базы данных: SQL Server Compact Edition
Функция удаляет строки из набора данных, но не из базы данных. Все дополнения к базе данных сохранены, но я не могу удалить из базы данных.
Нужно ли мне сделать что-то еще, чтобы база данных приняла мои изменения?
С наилучшими пожеланиями
Gorgen
Комментарии:
1. Это своего рода табличный адаптер, который записывается инструментом dataset при создании набора данных.
Ответ №1:
Попробуйте это вместо:
foreach (var item in listingDataTable.Where(
x => x.stock == key).ToList()) {
item.Delete();
}
Я думаю, что это фактически отметит строку для удаления.
Комментарии:
1. с помощью этого кода я получаю «Для обновления требуется действительная команда DeleteCommand при передаче коллекции DataRow с удаленными строками».
2. Когда я добавил свою команду DeleteCommand, она довольно сильно разбилась, жалуясь на проблемы с параллелизмом. Но, по крайней мере, ваш ответ дал мне представление о том, что было не так, и это главное, я думаю. 🙂
Ответ №2:
Оказалось, что мне нужно добавить DeleteCommand в мой адаптер базы данных. Команда DeleteCommand не была сгенерирована автоматически, и при использовании .RemoveListingRow(item)
сообщение об ошибке не выдавалось, оно просто не работало.
В источниках данных выберите «Редактировать набор данных с помощью конструктора» Свойства tableAdaper генерируют команду, такую как
УДАЛИТЬ ИЗ списка, ГДЕ (stock = @p1)