Платформа объекта 4 - Код Сначала не хранение наследованной таблицы отделяется от базовой таблицы

С Кодом EF Первый CTP 4 я создал простой проект. Этот проект состоит из 2 классов, одного наследованного от другого.

Я хочу хранить данные в отдельных таблицах, но значение по умолчанию EF 4 должно отображать/хранить эти два объекта в той же таблице.

С .ToTable(), Я могу изменить это поведение, но с этим у меня есть побочный эффект: когда я сохраняю Наследованный объект, EF не сохраняет общие ценности (напр. Идентификатор) на базовом классе.

Я уверен, что уезжаю для установки некоторой информации в отображении, но не знаю который.

static void Main(string[] args)
{
    Database.SetInitializer<ZooContext>(new RecreateDatabaseIfModelChanges<ZooContext>());
    using (ZooContext ctx = new ZooContext())
    {
        Mammal mam = new Mammal() ;
        mam.NumberOfLegs = 4;
        ctx.Animals.Add(mam);
        // ctx.Mammals.Add(mam)  as the same behavior
        ctx.SaveChanges();
    }
}


public class ZooContext : DbContext
{   
    public DbSet<Animal> Animals { get; set; }
    public DbSet<Mammal> Mammals { get; set; }

    protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Animal>().HasKey(p => p.Id).
                                    MapHierarchy().
                                    Case<Animal>(a => new { a.Id });
        modelBuilder.Entity<Animal>().HasKey(p => p.Id).
                                    MapHierarchy().
                                    Case<Mammal>(a => new { a.Id, a.NumberOfLegs }).ToTable("Mammals");

        base.OnModelCreating(modelBuilder);
    }
}

public class Animal
{
    public virtual int Id { get; set; }
}

public class Mammal : Animal
{
    public int NumberOfLegs { get; set; }
}
8
задан Zote 29 July 2010 в 14:55
поделиться