我想绑定一个Datagrid导航属性。绑定WPF Datagrid导航属性EF?
为example.If我有两个实体客户端和CLIENT_ID
当用户编辑手机的详细信息,修改正确保存
的问题无问题手机连接时存在的用户添加新的手机和保存时,新行未保存。 也如果用户添加新的客户端。客户端数据已保存,但所有手机都未保存? 感谢您的帮助
我想绑定一个Datagrid导航属性。绑定WPF Datagrid导航属性EF?
为example.If我有两个实体客户端和CLIENT_ID
当用户编辑手机的详细信息,修改正确保存
的问题无问题手机连接时存在的用户添加新的手机和保存时,新行未保存。 也如果用户添加新的客户端。客户端数据已保存,但所有手机都未保存? 感谢您的帮助
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();
}
}
试试这个
这可能是因为电话将拥有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();
}
}
谢谢回复。我从电话中删除了客户端媒体资源。但它不起作用 – Sam1970
不,你不能删除它,那么它将无法工作,所有你需要做的就是当你发送它保存或初始化电话对象时,将客户端设置为它。 – ethicallogics
看到答案我添加了虚拟代码。 – ethicallogics
给我你的代码。客户端类和保存方法。 – ethicallogics
我更新了问题代码 – Sam1970
感谢ethicallogics它工作正常 – Sam1970