EF6 - Mapeo de clave foránea TPH en clases derivadas usando propiedad de clase base

Estoy utilizando Entity Framework 6.0.2 con una base de datos existente en la que las etiquetas se almacenan en una sola tabla que se parece a esto:

Id: int, clave primariaTagType: cadena, determine el tipo de etiqueta, ya sea "usertag" o "movietag"ItemId: int, contiene el Id. del elemento al que se hace referencia (un Id. de usuario o un Id. de película)

Las siguientes clases describen esta situación:

public class User
{
    public int Id { get; set; }
}

public class Movie
{
    public int Id { get; set; }
}

public abstract class Tag
{
    public int Id { get; set; }
    public int ItemId { get; set; }
}

public class UserTag : Tag
{
    public virtual User User { get; set; }
}

public class MovieTag : Tag
{
    public virtual Movie Movie { get; set; }
}

Como puede ver, mis clases derivadas tienen propiedades de navegación, que están respaldadas por el valor delItemId Propiedad en la clase base. Mi mapeo es el siguiente:

public class Context : DbContext
{
    public DbSet<Tag> Tags { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Tag>()
            .Map<UserTag>(m => m.Requires("TagType").HasValue("usertag"))
            .Map<MovieTag>(m => m.Requires("TagType").HasValue("movietag"));

        modelBuilder.Entity<UserTag>()
            .HasRequired(m => m.User).WithMany().HasForeignKey(m => m.ItemId);

        modelBuilder.Entity<MovieTag>()
            .HasRequired(m => m.Movie).WithMany().HasForeignKey(m => m.ItemId);
    }
}

Ahora, cuando trato de usar este mapeo usando el siguiente código, obtengo una excepción:

using System.Data.Entity;

class Program
{
    static void Main()
    {
        using (var db = new Context())
        {
            db.Database.Delete();
            db.Database.Initialize(false);
        }
    }
}

La excepción que se lanza es:

Unhandled Exception: System.InvalidOperationException: The foreign key component 'ItemId' is not a declared property on type 'UserTag'. Verify that it has not been explicitly excluded from the model and that it is a valid primitive property

sí elItemId La propiedad no se declara en el tipoUserTag, pero se hereda de la base.Tag clase. A mí me parece que este mapeo debería ser posible. ¿Es este un error o una restricción en Entity Framework 6?

Respuestas a la pregunta(1)

Su respuesta a la pregunta