次のような状況があります。
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();
}
...変更を保存しません。データベースに手動で値を追加すると、完全に機能するため、リレーションを正しく設定する必要があります。
同様のエントリをたくさん見ましたが、それらはすべて保存されていないか、添付されていませんでした。コードが実行されます (デバッグできます)。何が問題なのですか?