我是新来的实体框架,并努力寻找以下解决方案。我有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