Я постараюсь максимально упростить свою задачу.
Не стесняйтесь комментировать и поправлять мой английский. Надеюсь, ты меня понимаешь.
Мой главный вопрос: Есть ли простой и «автоматический» способ заполнить таблицу в наборе данных только строками, относящимися к данным в другой таблице?
Допустим, у нас есть база данных со следующей схемой:
Теперь я пытаюсь сделать то же самое с таблицей «Заказы» и создать собственный метод «FillByDate». Это работает, но есть небольшая проблема:
DataSet1 myDataSetInstance = new DataSet1();
DataSet1TableAdapters.OrdersTableAdapter OrdersTA = new DataSet1TableAdapters.OrdersTableAdapter();
OrdersTA.FillByDate(myDataSetInstance.Orders, new DateTime(2013, 1,1), DateTime.Now);
foreach (var row in myDataSetInstance.Orders)
{
MessageBox.Show(row.Comments); // OK
MessageBox.Show(row.CustomersRow.Name); //NULL
}
Получить соответствующую строку из таблицы «Клиенты» невозможно - сначала мне нужно вручную заполнить эту таблицу. Я вижу два способа сделать это
- Получение всего содержимого этой таблицы - но это будет МНОГО ненужных данных
- Создать собственный запрос в его TableAdapter - что-то вроде FillByOrdersByDate (@ Date1, @ Date2) - это легко, когда у меня есть только 2 таблицы и 1 отношение, но с большим количеством таблиц этот метод потребует десятков настраиваемых запросов для каждого TableAdapter.
Я действительно верю, что должен быть "лучший" способ сделать это.