我想将Datagrid绑定到navigation属性。
例如。如果我有两个实体客户端和电话通过Client_ID链接
当用户编辑手机详细信息,修改保存正确时没问题
当用户添加新手机并保存时,存在问题,新行未保存。 如果用户添加新客户端。客户端数据已保存但所有手机都未保存? 谢谢你的帮助
答案 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();
}
}
试试这个