我是新來的實體框架,並努力尋找以下解決方案。我有3個不同的表格 - Admin,AdminReport和Reports。管理員是應用程序的管理員詳細信息,管理員報告是特定管理員擁有的報告詳細信息。報告是包含報告參考數據的參考表。實體框架助理更新
現在,當我添加這些表,管理和報告表添加爲實體,但AdminReport添加爲協會。
我在一種情況,我需要刪除或插入記錄到管理報告,但每當我做了什麼,實體框架試圖更新我的參考表「報告」。代碼如下:
public void UpdateAdminDetails(List<AdminDetails> AdminListtoUpdate)
{
foreach(var admin in AdminListtoUpdate)
{
var updateAdmin = db.Admins.SingleOrDefault(item => item.adminId == admin.AdminId && !admin.IsNew);
updateAdmin.IsAdmin = admin.IsAdmin;
updateAdmin.PersonId = admin.PersonId;
// User on the front end can remove few reports associated with the admin
var AdminReportIDsListToDelete = admin.AdminReport.Select(d => d.AdminReportId).ToList();
var itemsToDelete = updateAdmin.AdminReports.Where(d => !AdminReportIDsListToDelete.Contains(d.AdminReportId)).ToList();
foreach (var itemtoDelete in itemsToDelete)
admin.AdminReport.Remove(itemtoDelete);
// User on the front end can add new reports to the admin.
var AdminReportIDsListToCreate = updateAdmin.AdminReports.Select(c => c.AdminReportId).ToList();
var itemsToCreate = admin.AdminReports.Where(c => !AdminReportIDsListToCreate.Contains(c.AdminReportId)).ToList();
updateAdmin.AdminReports.AddRange(itemsToCreate);
db.saveChanges();
}
}
但是,我收到一條錯誤消息,指出它無法將重複記錄插入到報表中。
請求您的幫助來解決此查詢。謝謝。
這個SO問題可以幫助你。 http://stackoverflow.com/questions/7489695/how-to-remove-relationship-between-two-entities – jlvaquero
非常感謝Jlvaquero ...它解決了我的問題,刪除現有的報告。但添加報告的問題仍然是一個問題。 – Subash
嘗試了其他幾個選項,但沒有運氣......它可能看起來很奇怪,但我沒有選擇,我正在努力尋找同樣的解決方案。 dbContext.EmployerAdmins.Attach(updateAdmin); dbContext.Entry(updateAdmin).Entity.EmployerAdminReports.Add(empAdmin.EmployerAdminReport.SingleOrDefault(item => item.EmployerAdminReportId == addItem)); – Subash