В той форме, в которой мы имеем это, IntaktsBudgetsType - это перечисление с плохим именем, в котором указывается только метка для заполнения таблицы данных после клиента или продукта (бюджетирование выполняется после продукта или клиента)
private void UpdateGridView() {
bs = new BindingSource();
bs.DataSource = intaktsbudget.GetDataSource(this.comboBoxKundID.Text, IntaktsBudgetsType.PerKund);
dataGridViewIntaktPerKund.DataSource = bs;
}
Заполняет сетку данных представлением базы данных, объединяющим таблицы продуктов, бюджета и клиентов.
Логика имеет следующий метод для получения правильного набора IList из репозитория, который выполняет только GetTable<T>.ToList<T>
public IEnumerable<IntaktsBudgetView> GetDataSource(string id, IntaktsBudgetsType type)
{
IList<IntaktsBudgetView> list = repository.SelectTable<IntaktsBudgetView>();
switch (type)
{
case IntaktsBudgetsType.PerKund:
return from i in list
where i.kundId == id
select i;
case IntaktsBudgetsType.PerProdukt:
return from i in list
where i.produktId == id
select i;
}
return null;
}
Теперь я не хочу использовать представление базы данных, поскольку оно доступно только для чтения, и я хочу иметь возможность выполнять действия CRUD с представлением данных.
Я мог бы создать класс, который будет действовать как обертка для всего этого, и связать различные значения таблицы со свойствами класса, но это не совсем правильно, поскольку мне пришлось бы делать это для каждой отдельной вещи, которая требует «слияния». ».
Что-то довольно важное (и, вероятно, основное) не хватает мыслительного процесса, но, проведя выходные на Google и в книгах, я сдаюсь и обращаюсь к SO-сообществу.