EF 4.3 (Code First) - Benutzerdefinierte ICollection fängt keine neuen Objekte ab
Dies bezieht sich auf die Frage, die ich in Bezug auf gestellt habeFestlegen, wann der virtuellen ICollection-Eigenschaft Elemente hinzugefügt werden. Wie vorgeschlagen, habe ich eine benutzerdefinierte Sammlung erstellt, die wie unten gezeigt von der Sammlung erbt
public class EntityCollection<T> : Collection<T>
{
protected override void InsertItem(int index, T item)
{
base.InsertItem(index, item);
}
}
Dies wird verwendet als
public class DbAppointment
{
public DbAppointment()
{
exceptionOcurrences = new EntityCollection<DbExceptionOcurrence>();
}
public virtual int AppointmentId { get; set; }
public virtual string Subject { get; set; }
public virtual string Body { get; set; }
public virtual DateTime Start { get; set; }
public virtual DateTime End { get; set; }
private ICollection<DbExceptionOcurrence> exceptionOcurrences;
public virtual ICollection<DbExceptionOcurrence> ExceptionOcurrences
{
get { return exceptionOcurrences; }
set { exceptionOcurrences = value; }
}
}
Das Problem ist, dass die überschriebene InsertItem-Methode anscheinend nur aufgerufen wird, wenn ich die Datenbank mit einem benutzerdefinierten Initialisierer initialisiere (Beispielcode unten) und die Seed-Methode überschreibe !! Was mache ich falsch?
Prost Abs
public class ContextInitializer : DropCreateDatabaseAlways<Context>
{
protected override void Seed(Context context)
{
new List<DbAppointment>
{
new DbAppointment{ Subject = "hello", Body="world", Start=DateTime.Now, End=DateTime.Now.AddMinutes(30)},
}.ForEach(a => context.Appointments.Add(a));
new List<DbExceptionOcurrence>
{
new DbExceptionOcurrence{ExceptionDate=DateTime.Now}
}.ForEach(eo => context.ExceptionOcurrences.Add(eo));
base.Seed(context);
}
}