将WPF Datagrid绑定到导航属性EF?

时间:2012-07-05 06:08:24

标签: c#-4.0 entity-framework-4.1 wpfdatagrid

我想将Datagrid绑定到navigation属性。

例如。如果我有两个实体客户端和电话通过Client_ID链接

当用户编辑手机详细信息,修改保存正确时没问题

当用户添加新手机并保存时,存在问题,新行未保存。 如果用户添加新客户端。客户端数据已保存但所有手机都未保存? 谢谢你的帮助

2 个答案:

答案 0 :(得分:0)

这可能是因为Phone将拥有Property Client当您添加Phone时,此属性为null,因此您还必须将其Client Property设置为Current客户端,或者更确切地说是将其ID设置为Phone的客户端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();
             }

        }

答案 1 :(得分: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();
        }
    }

试试这个