Объединение списков IList для привязки к представлению данных, чтобы избежать использования представления базы данных - PullRequest
0 голосов
/ 03 мая 2010

В той форме, в которой мы имеем это, 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-сообществу.

1 Ответ

0 голосов
/ 03 мая 2010

Я не вижу точно вашей проблемы. Вы можете создать общий IList, который поддерживает коллекцию ILists в качестве конструктора и, по сути, представляет их объединенными. Это сводится к большому количеству программного кода, но является очень общим. IList нужно только отследить, с каким исходным списком связан каждый элемент, чтобы он мог правильно пересылать операции удаления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...