EF 4.3 (Code First) - Custom ICollection не может поймать новые предметы

Это относится к вопросу, который я задал относительнокак определить, когда элементы добавляются в свойство virtual ICollection, Как и предполагалось, я создал собственную коллекцию, которая наследуется от коллекции, как показано ниже

public class EntityCollection<T> : Collection<T>
{
    protected override void InsertItem(int index, T item)
    {
        base.InsertItem(index, item);
    }
}

Это используется как

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; }
    }
}

Проблема только в том, что переопределенный метод InsertItem, кажется, вызывается, если я инициализирую базу данных с помощью пользовательского инициализатора (пример кода ниже) и переопределяю метод seed !! Что я делаю неправильно?

ура 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);
    }
}
 user146047317 июн. 2012 г., 18:56
@Slauma: Спасибо ... теперь это работает отлично :)
 Slauma17 июн. 2012 г., 16:33
Вы можете попробовать заменитьICollection<DbExceptionOcurrence> в определении классаEntityCollection<DbExceptionOcurrence> и проверить, поможет ли это? И: имяEntityCollection<T> это не лучший выбор, потому что EF уже имеет тип с таким именем ... не то, что ваш конструктор использует этот тип из-за некоторыхusing операторы в файле класса ...

Ответы на вопрос(0)

Ваш ответ на вопрос