Я думаю, что это должно быть простым делом, но я думаю об этом. Это приложение Windows Forms на C #.
Я создал класс 'DataService', который реализует и заполняет несколько наборов данных, которые я определил с помощью конструктора наборов данных VS.
Затем я передаю эти наборы данных бизнес-объектам, которые могут отображать, обновлять, добавлять и удалять строки в этих наборах данных, а затем «DataService» обрабатывать .AcceptChanges (). Ни один из моих столов не большой.
Он работает отлично, за исключением того, что обновления никогда не передаются обратно в базу данных (MS-Access).
Я пытался использовать get / set для передачи наборов данных в бизнес-классы. Наборы данных корректно обновляются, и я вижу их обратно в классе 'DataService' в режиме отладки.
Я много исследовал, но большинство реализаций с отдельной службой данных гораздо более абстрактны, чем эта. Моя идея состояла в том, чтобы иметь только одну копию когда-либо созданного набора данных, чтобы класс DataService мог видеть обновления и фиксировать их с помощью dataset.AcceptChanges ().
Конечно, я, вероятно, не реализовал это правильно (даже если это работоспособный вариант), потому что обновления не фиксируются - база данных Access никогда не обновляется.
В приведенном ниже примере у меня есть один набор данных dsWLQueues с двумя таблицами данных. dsWLQueues был создан в конструкторе наборов данных, который генерирует все операторы обновления и т. д. ...
Может ли кто-нибудь помочь с моим пониманием?
Спасибо
public class DataService
{
// Class to handle all data retrievals and management
private static dsWLQueues dslWLQueues = new dsWLQueues();
public static dsWLQueues Queues {get { return dslWLQueues; } set { dslWLQueues = value; dslWLQueues.AcceptChanges(); } }
public static void LoadAllData()
{
dsWLQueuesTableAdapters.SongQueueNamesTableAdapter daSongQueueNames = new dsWLQueuesTableAdapters.SongQueueNamesTableAdapter();
dslWLQueues.Clear();
daSongQueueNames.Fill(dslWLQueues.SongQueueNames);
dsWLQueuesTableAdapters.SongQueuesTableAdapter daSongQueues = new dsWLQueuesTableAdapters.SongQueuesTableAdapter();
daSongQueues.Fill(dslWLQueues.SongQueues);
}
Затем использовать этот класс:
public class QueueList : System.Windows.Forms.UserControl
{
private dsWLQueues dsSongQueues;
dsSongQueues = DataService.Queues;
...some code that displays and updates/deletes/adds data...
DataService.Queues = dsSongQueues;
}