2011-11-27 153 views
1

我有我從SQL Server視圖填充一個ListView名爲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的用戶雙擊一行,我從view_ListaKlientowID和使用fillClientGui在gui中填寫必要的字段(僅包含一個字段的測試)。

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; 
      } 
     } 
    } 

現在我不知道,因爲我清楚地知道我在查詢一個ID我應該只得到特定的客戶端,而不是客戶端,以便從foreach只是fillClientGui到斯格特列表IQueryable<Klienci>似乎是不必要的額外代碼。或者這是應該如何完成的?我試圖學習實體,有些東西還不是很清楚:)

回答

1

如果您確定只有一個實例從數據庫返回,則可以使用擴展函數FirstOrDefault()在這種情況下:

var source = context.Kliencis.Include("Podmioty").Where(d => d.KlienciID == klientId).FirstOrDefault(); 
textNIP.Text = source.Podmioty.PodmiotNIP; 
+0

很好。謝謝。 – MadBoy

+0

不客氣。 –