WPF, EF4 и отношения - PullRequest
       24

WPF, EF4 и отношения

1 голос
/ 13 августа 2011

Отношения - это, вероятно, неправильное слово, но таблицы данных - это то, что я использовал раньше.У меня есть EF4, извлекающий из базы данных SQL.Таблицы как Клиент, Компания, Отдел;вещи, которые обычно идут в Combobox для выбора.Я держу их в статических списках (необходимо заполнить только при запуске приложения), и у меня есть несколько связанных с ними источников элементов в выпадающих списках, что облегчает настройку «связывания» определенного выбора путем привязки выбранного элемента из ViewModel.

Моя проблема в том, что в некоторых местах мне просто нужно имя, связанное с идентификатором в сетке данных, только для отображения.Пара сотен строк с CompanyId, который должен быть CompanyName.Я беспокоюсь о производительности здесь.Я мог бы использовать DB FK для получения имен во время поиска, но это кажется пустой тратой, поскольку у меня все они есть в статических списках.Я также не знаю, будет ли Lazy загрузка означать, что их ищут во время привязки данных или во время первоначального запроса.

Какое здесь лучшее решение?Можете ли вы сделать конвертер значений wpf, используя статические списки?Должен ли я выполнять foreach для данных после их получения и просмотра значений в статическом списке, сохраняя имя в объекте?

Ответы [ 2 ]

1 голос
/ 13 августа 2011

Вы можете встроить эту логику в свой запрос:

var viewModels = (from c in objectContext.Customers
                 select new MyGridViewModel {
                       CustomerId = c.CustomerId,
                       CompanyId = c.CompanyId,
                       CompanyName = c.Company.Name
                 }).ToList();

Это избавит от необходимости извлекать все ваши столбцы (будут возвращены только CustomerId, CompanyId и Company Name. Вы также не будетеленитесь загружать компанию клиента.

Тогда вы можете просто привязать свои модели просмотра к сетке:

myGrid.ItemsSource = viewModels;
0 голосов
/ 13 августа 2011

Не могли бы вы просто вставить статические данные, необходимые для ComboBox, в конструктор каждой из ваших ViewModels?

Например, в вашем конструкторе вы можете передать List<Customer> customers или если вы хотитеизбегая использования объектов-сущностей, вы можете передать List<CustomerViewModel> customerViewModels, в котором есть только столбцы, необходимые для заполнения комбинированных полей.

Если вы используете инфраструктуру внедрения зависимостей, это будет особенно легко, но даже еслиэто не так, это не должно быть слишком плохо, и это хорошая практика.

...