我是EF新手,我和我的孩子有一點麻煩。我可以保存一個實體對象的實例,但是當我嘗試保存與該實體相關聯的子代時,它會炸燬我。 實體框架保存子女
我目前正在使用的模型。
public bool UpdateSelectedUser(user selectedUser)
{
nsdc_supplyEntities ctx = new nsdc_supplyEntities();
try
{
user editUser = ctx.users
.Include(ug => ug.network_group)
.Where(u => u.id == selectedUser.id).FirstOrDefault();
editUser.full_name = selectedUser.full_name;
editUser.office_phone = selectedUser.office_phone;
editUser.cell_phone = selectedUser.cell_phone;
editUser.home_phone = selectedUser.home_phone;
editUser.text_address = selectedUser.text_address;
editUser.email = selectedUser.email;
foreach (network_group group in selectedUser.network_group)
{
editUser.network_group.Add(group);
}
ctx.SaveChanges();
}
catch (Exception e)
{
}
}
我正在使用的代碼。在editUser.network_group.Add(group);
行中出現錯誤,表示「兩個對象之間的關係無法定義,因爲它們連接到不同的ObjectContext對象」。我已經在Google和SO上挖掘了一些潛在的答案,但到目前爲止還沒有找到任何解決問題的方法。
-UPDATE- 更改了組foreach以反映Shyju的建議。它讓我走得更遠,但暴露了另一個問題:
foreach (network_group group in selectedUser.network_group)
{
var groupEntity = new network_group
{
id = group.id,
full_name = group.full_name,
distribution_list_email = group.distribution_list_email
};
if (editUser.network_group.Where(g => g.id == groupEntity.id).Count() < 1)
{
editUser.network_group.Add(groupEntity);
}
}
有一個引發錯誤的唯一約束。我注意到我插入了一些重複的條目。所以現在如果用戶已經擁有一個組,它就不會添加它。不過,現在我只添加了當前沒有與用戶關聯的組,但我仍然收到一個唯一的約束錯誤。我發現的是,它現在將新組添加到組表中,然後將其與用戶相關聯。我想將現有的組添加到用戶,而不是創建一個新的組。越來越近! :)
至於你的第一句話,我指的是parenting.stackexchange.com :) –