[英]Entity Framework Code First Many to Many Relationship with Existing Entities
我有以下情況:
modelBuilder.Entity<RecurringAppointment>()
.HasMany(ra => ra.StaffMembers)
.WithMany();
因此,工作人員(從用戶繼承)可以有很多重復的約會,反之亦然。 現在,當我嘗試將職員添加到recurringAppointment.StaffMembers這樣的時候...
[Invoke]
public void ApplyStaffMembersToRecurringAppointment(int recurringAppointmentId, int[] staffMemberIds)
{
var staffs = DbContext.Users
.OfType<Staff>()
.Where(s => staffMemberIds.Contains(s.Id))
.ToList();
var recurringAppointment = DbContext.RecurringAppointments
.Include("StaffMembers")
.Single(ra => ra.Id == recurringAppointmentId);
foreach (var staff in staffs)
{
recurringAppointment.StaffMembers.Add(staff);
DbContext.Users.Attach(staff);
}
DbContext.RecurringAppointments.Attach(recurringAppointment);
DbContext.Entry(recurringAppointment).State = EntityState.Modified;
DbContext.SaveChanges();
}
...它只是不會保存更改。 當我手動將值添加到數據庫時,它可以完美工作,因此應正確設置該關系。
我查看了大量的類似條目,但是它們要么都沒有保存,要么沒有附加。 代碼被執行(我可以調試)。 可能是什么問題呢?
您的Staff對象是否有一個導航集合,該導航集合回溯到您的定期約會? 當我在ReccuringAppointments和StaffMembers上都擁有導航集合時,上面的代碼沒有保存更改。
如果您僅在ReccuringAppointmets上具有導航集合,則它確實可以工作-除非我在配置中設置了AutoDetectChangesEnabled = false
。
如果這兩種情況均未發生,則代碼可以正常工作-如果這些情況對您而言不正確,您可以發布上下文/實體以獲取更多信息嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.