EF 4.3(代码优先) - 自定义ICollection无法捕获新项目

时间:2012-06-17 14:14:55

标签: entity-framework ef-code-first

这是关于我提出的关于how to determine when items are added to the virtual ICollection property的问题。正如所建议的那样,我创建了一个自定义集合,它继承自Collection,如下所示

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方法似乎被调用的唯一时间!我做错了什么?

干杯 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);
    }
}

0 个答案:

没有答案