Использование Entity Framework - PullRequest
       1

Использование Entity Framework

1 голос
/ 27 ноября 2011

У меня есть ListView, который я заполнил из представления SQL Server и который называется view_ListaKlientow с помощью этого запроса:

    private void fillClientsList() {
        using (var context = new EntityBazaCRM()) {
            var listaKlientow = from d in context.view_ListaKlientow
                                select d;
            objectListViewListaKlientow.SetObjects(listaKlientow.ToList());
            objectListViewListaKlientow.AutoResizeColumns();
        } 
    }

Затем, после того как пользователь дважды щелкнул одну строку в ListView, я прочитал ID из view_ListaKlientow и используйте fillClientGui для заполнения необходимых полей в графическом интерфейсе (для теста включено только одно поле).

    private void objectListViewListaKlientow_DoubleClick(object sender, EventArgs e) {
        foreach (view_ListaKlientow user in objectListViewListaKlientow.SelectedObjects) {
            int id = user.KlienciID;
            fillClientGui(id);
            TabPageActivate(tabControlMain, tabPageKlient);
        }
    }
    private void fillClientGui(int klientId) {
        using (var context = new EntityBazaCRM()) {
            IQueryable<Klienci> klient = context.Kliencis.Include("Podmioty").Where(d => d.KlienciID == klientId);
            foreach (var source in klient.ToList()) {
                textNIP.Text = source.Podmioty.PodmiotNIP;
            }
        }
    }

Теперь мне интересно, так как я точно знаю, что я запрашиваю один идентификатор, я должен получать только определенного клиента, а не список клиентов, поэтому foreach из fillClientGui просто для обходчиков IQueryable<Klienci> кажется дополнительным ненужным кодом.Или это как это сделать?Я пытаюсь выучить сущность, и некоторые вещи мне пока не ясны:)

1 Ответ

1 голос
/ 27 ноября 2011

Если вы уверены, что у вас есть только один экземпляр, который будет возвращен из базы данных, вы можете использовать функцию расширения FirstOrDefault() в этом случае:

var source = context.Kliencis.Include("Podmioty").Where(d => d.KlienciID == klientId).FirstOrDefault();
textNIP.Text = source.Podmioty.PodmiotNIP;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...