使用继承的类映射实体

时间:2014-08-06 14:13:45

标签: entity-framework asp.net-mvc-4

我有RCM和RCS类,都从RC继承,我希望该实体只生成RCM和RCS表。我的上下文类有以下方法:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        modelBuilder.Entity<Cliente>().Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("Cliente");
        });

        modelBuilder.Entity<Usuario>().Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("Usuario");
        });

        modelBuilder.Entity<RCS>().Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("RCS");
        });

        modelBuilder.Entity<RCM>().Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("RCM");
        });

        modelBuilder.Entity<MaterialPedido>().Map(m =>
        {
            m.MapInheritedProperties();
            m.ToTable("MaterialPedido");
        });
    }

其他具有继承的类工作正常,但也生成了RC表。

RC,RCM和RCS课程。

public abstract class RC
{
    [Key]
    public int ID { get; set; }

    [Required]
    public String Numero { get; set; }

    [Required(ErrorMessage = "Campo Obra é obrigatório!")]
    public virtual Obra Obra { get; set; }

    [Required]
    public DateTime Data { get; set; }

    [Required]
    public Usuario Ususario { get; set; }
}

public class RCM : RC
{
    public DateTime DataNecessidade { get; set; }

    [Required(ErrorMessage = "Os Materiais são obrigatórios!")]
    public List<MaterialRCM> Materiais { get; set; }

    public RCM()
    {

    }

    public RCM(int ID, String Numero, Obra Obra, DateTime Data, DateTime DataNecessidade, List<MaterialRCM> Materiais, int Cod_Usuario)
    {
        base.ID = ID;
        base.Numero = Numero;
        base.Obra = Obra;
        base.Data = Data;
        this.DataNecessidade = DataNecessidade;
        this.Materiais = Materiais;
        base.Ususario.ID = Cod_Usuario;
    }
}

}

public class RCS : RC
{
    [Required(ErrorMessage = "Campo Serviço é obrigatório!")]
    public String Servico { get; set; }

    public DateTime DtaInicial { get; set; }

    public DateTime DtaFinal { get; set; }

    public RCS()
    {

    }

    public RCS(int ID, String Numero, Obra Obra, String Servico, DateTime Data, DateTime DtaInicial, DateTime DtaFinal, int Cod_Usuario)
    {
        base.ID = ID;
        base.Numero = Numero;
        base.Obra = Obra;
        this.Servico = Servico;
        base.Data = Data;
        this.DtaInicial = DtaInicial;
        this.DtaFinal = DtaFinal;
        base.Ususario.ID = Cod_Usuario;
    }

}

0 个答案:

没有答案