EF7 Migrations - The corresponding CLR type for entity type '' is not instantiable

asked10 years ago
last updated6 years ago
viewed22.2k times
Up Vote20Down Vote

I'm trying to use EF7 migrations and got stuck when I modeled an Organization model with inheritance.

Organization is an abstract class. There are two concrete classes that inherit from it called Individual and Company.

I set the Organization abstract class as DbSet<Organization> in DbContext and run migrations.

I'm following this tutorial here.

The following error is shown:

The corresponding CLR type for entity type 'Organization' is not instantiable and there is no derived entity type in the model that corresponds to a concrete CLR type.

Whats should I do?

public abstract class Organization
{
    public Organization()
    {
        ChildOrganizations = new HashSet<Organization>();
    }

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public bool Enabled { get; set; }
    public bool PaymentNode { get; set; }
    public DateTime Created { get; set; }
    public DateTime Updated { get; set; }

    // virtual
    public virtual ICollection<Organization> ChildOrganizations { get; set; }
}
public class Individual : Organization
{
    public string SocialSecurityNumber { get; set; }
    public string Firstname { get; set; }
    public string Lastname { get; set; }
}
public class Company : Organization
{
    public string Name { get; set; }
    public string OrganizationNumber { get; set; }
}
public class CoreDbContext : IdentityDbContext<ApplicationUser>
{
    public DbSet<Organization> Organization { get; set; }

    public CoreDbContext(DbContextOptions<CoreDbContext> options)
        : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
        // Customize the ASP.NET Identity model and override the defaults if needed.
        // For example, you can rename the ASP.NET Identity table names and more.
        // Add your customizations after calling base.OnModelCreating(builder);
    }
}

Thanks in advance!