2016-03-02 28 views
1

我需要一個EF示例代碼來填充我的客戶表單控件,該控件基於放置在搜索字段中的值。考慮到這個表單上的組合已經被填充,並且用戶可以通過在文本框上指定一個值來創建新記錄或編輯現有的記錄。組合中充滿了來自國家,州,城市等輔助表的數據庫數據(名稱)。 在客戶表上,我只有這些名稱的Id(外鍵)。因此,在用戶放置客戶ID的表單上,如果它不存在,我們正在創建一個新記錄,否則表單應該從數據庫加載整個記錄並填寫表單上的相應字段,包括在組合與記錄上的Id相匹配的名稱,爲用戶提供修改任何字段並將其保存的選項。 在非EF情況下我會是這樣的:EF數據綁定,編輯,修改和保存記錄

private void txtId_TextChanged(object sender, EventArgs e) 
    { 
     sqlStrQuery = "Select FName, LName, Email, Phone, CountryId from Customer where ID= '" + txtId.Text + "'"; 
     SqlCommand sqlCmd = new SqlCommand(sqlStrQuery, sqlConStr); 

     sqlConStr.Open(); 
     SqlDataReader drCustomer = sqlCmd.ExecuteReader(); 
     if (drCustomer.HasRows) 
     { 
      while (drCustomer.Read()) 
      { 
       txtFirstName.Text = drCustomer.GetValue(1).ToString(); 
       txtlastName.Text = drCustomer.GetValue(2).ToString(); 
       txtEmail.Text = drCustomer.GetValue(3).ToString(); 
       txtPhone.Text = drCustomer.GetValue(4).ToString(); 
       cboCountry.SelectedValue = drCustomer.GetValue(5); 

      } 
     } 

    } 

我怎麼能轉換成EF? 在此先感謝。

+0

你想知道如何設置綁定您的所有文字盒子?這樣,一旦您更新drCustomer,所有文本框會自動更新,並且當用戶更新文本框時,您的Customer對象中的相關字段也會自動更新?確認這一點,我會發給你一個代碼片段,並解釋它是如何工作的。 –

+0

嗨Opender!不完全,但這聽起來很有趣。你介意給我一小段代碼嗎?提前致謝。順便說一句,我使用ADO.Net,現在我將我所有的代碼轉換爲實體框架。 –

+0

即將做:) –

回答

1

假設你有一個變量,比如背景,爲您的數據方面:

var customer = context.Customers.Find(txtId.Text); 
if (customer != null) 
{ 
    txtFirstName.Text = customer.FirstName; 
    txtlastName.Text = customer.LastName; 
    txtEmail.Text = customer.Email; 
    txtPhone.Text = customer.Phone; 
    cboCountry.SelectedValue = customer.CountryId; 
} 

編輯:要搜索多個標準

var matches = context.Customers.AsQueryable(); 
if (!string.IsNullOrEmpty(txtLastName.Text)) 
{ 
    matches = matches.Where(m => m.LastName == txtLastName.Text); 
} 
if (!string.IsNullOrEmpty(txtFirstName.Text)) 
{ 
    matches = matches.Where(m => m.FirstName == txtFirstName.Text); 
} 
// repeat for searchable fields 
return matches.ToList(); 
+0

嗨,夥伴!對不起,遲到的回覆,但互聯網在這裏是一個選擇少數商品; --D .... 史蒂夫,你的建議「有效」,謝謝。但只適用於像Int32,Guid等標量類型。該方法假定使用主鍵列搜索記錄。但我需要爲用戶提供使用其他標準(如lastName,zip等)進行搜索的可靠性,這些標準表示表中的正常字段。我需要類似於: var customer = context.Customers.FindIn(列名,要搜索的值); 在此先感謝。 –

+0

好的,我發佈了問題中示例的LINQ等價物。如果你想要更有活力的東西,我用一種方法編輯答案。 –

+0

每次有人用EF,LINQ等代碼片斷幫助我,我對這些技術的功能感到非常興奮。我對這兩個人都是新的......史蒂夫和任何不願意幫助的人都很榮幸。 –