2012-07-05 97 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