Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 将WPF Datagrid绑定到导航属性EF?_C# 4.0_Entity Framework 4.1_Wpfdatagrid - Fatal编程技术网

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

C# 4.0 将WPF Datagrid绑定到导航属性EF?,c#-4.0,entity-framework-4.1,wpfdatagrid,C# 4.0,Entity Framework 4.1,Wpfdatagrid,我想将Datagrid绑定到导航属性 例如,如果我有两个实体,客户端和电话通过客户端ID链接 用户编辑电话详细信息时没有问题,修改内容已正确保存 当用户添加新手机并保存时存在此问题,新行不保存。 另外,如果用户添加新的客户端。客户端数据已保存,但未保存所有电话? 感谢帮助这可能是因为当您添加Phone时,Phone将具有属性客户端,然后此属性为空,因此您还必须将其客户端属性设置为当前客户端,或者更确切地说,将其id设置为Phone F.K的客户端。希望这会有所帮助 public void Sav

我想将Datagrid绑定到导航属性

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

用户编辑电话详细信息时没有问题,修改内容已正确保存

当用户添加新手机并保存时存在此问题,新行不保存。 另外,如果用户添加新的客户端。客户端数据已保存,但未保存所有电话?
感谢帮助

这可能是因为当您添加Phone时,Phone将具有属性客户端,然后此属性为空,因此您还必须将其客户端属性设置为当前客户端,或者更确切地说,将其id设置为Phone F.K的客户端。希望这会有所帮助

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

        }

试试这个

谢谢回复。我从手机中删除了客户端属性。但是它不起作用不,你不能删除它,那么它将不起作用,你所需要做的就是在你发送它以保存或初始化电话对象时将客户端设置为它。用户从WPF Datagrid添加新电话。您能告诉我应该使用哪个datagrid事件将客户端设置为电话吗。如果您能提供代码示例,我将不胜感激。请在从ViewModel发送客户端进行保存时执行此操作,或者在DAL/Repository中执行此操作。就在保存客户端之前。用户可能会添加任意数量的电话。还有很多详细的表链接到客户端,并且有相同的问题。我不太了解Dal/存储库模式。
 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();
        }
    }