2012-07-05 134 views
0

我想綁定一個Datagrid導航屬性。綁定WPF Datagrid導航屬性EF?

爲example.If我有兩個實體客戶端和CLIENT_ID

當用戶編輯手機的詳細信息,修改正確保存

的問題無問題手機連接時存在的用戶添加新的手機和保存時,新行未保存。 也如果用戶添加新的客戶端。客戶端數據已保存,但所有手機都未保存? 感謝您的幫助

回答

0
private void Save_Button_Click(object sender, RoutedEventArgs e) 
    { 
     Client1.PhoneNumbers.ToList().ForEach(pn => pn.Client = Client1); 
     Client1.OtherNavigationProperties = null; 
     using(var context=new MyContext()) 
     { 
      if (insert) 
       context.Client.Add(Client1); 
      if (update) 
      { 
       var client = context.GetClientsByClientID(Client1.ID); 
       client.PhoneNumbers = Client1.PhoneNumbers; 
       //other changes if any in client 
       //again set all navigation properties null else than PhoneNumbers 

      } 
      context.SaveChanges(); 
     } 
    } 

試試這個

+0

給我你的代碼。客戶端類和保存方法。 – ethicallogics

+0

我更新了問題代碼 – Sam1970

+0

感謝ethicallogics它工作正常 – Sam1970

0

這可能是因爲電話將擁有Property Client當您添加Phone時,此屬性爲null,因此您還必須將其客戶端屬性設置爲當前客戶端或更確切地說,將在電話FK。希望這會有所幫助。

public void SaveClient(Client client) 
     { 
      client.PhoneNumbers.ToList().ForEach(pn=>pn.Client=client); 
      using(var context=new MyContext()) 
      { 
        context.Clients.Add(client); 
        context.SaveChanges(); 
      } 

     } 
+0

謝謝回覆。我從電話中刪除了客戶端媒體資源。但它不起作用 – Sam1970

+0

不,你不能刪除它,那麼它將無法工作,所有你需要做的就是當你發送它保存或初始化電話對象時,將客戶端設置爲它。 – ethicallogics

+0

看到答案我添加了虛擬代碼。 – ethicallogics