Kirsten
Kirsten

Reputation: 18188

Entity Framework Table Per Type inheritance with discriminator column

I am using EF5 TPT and thus don't expect a discriminator column. Why is it being created?

The ( simplified) table classes are;

[Table("SalesDocumentHeaders")]
public abstract class SalesDocumentHeader : LoggedEntity
{
    [ForeignKey("CreatedByUserId")]
    public virtual User CreatedBy { get; set; }

    [Required]
    public int CreatedByUserId { get; set; }

    [Required]
    public virtual DateTime? DocumentDate { get; set; }

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

  } 

[Table("SalesOrders")]
public class SalesOrder : SalesDocumentHeader
{
    [Required]
    public String CustomerOrderNumber { get; set; }

    public DateTime? DeliverBy { get; set; }

    public virtual SortableBindingList<SalesOrderLine> Lines { get; set; }

}

public abstract class LoggedEntity
{
    public int Id { get; set; }

    public Guid RowId { get; set; }

    [ConcurrencyCheck]
    public int RowVersionId { get; set; }

}

The context contains

 public DbSet<SalesOrder> SalesOrders { get; set; }

 public DbSet<SalesDocumentHeader> SalesDocumentHeaders { get; set; }

The SalesDocumentHeader table creates with a Discriminator column. What am I doing wrong?

it makes no difference whether SalesDocumentHeader is declared as abstract or not

Upvotes: 4

Views: 1044

Answers (1)

Kirsten
Kirsten

Reputation: 18188

because I had another class which inherited from SalesDocumentHeader which I forgot to mark with the table attribute

Upvotes: 4

Related Questions