The seed entity for entity type 'X' cannot be added because the was no value provided for the required property "..ID"

Tomino picture Tomino · Apr 24, 2018 · Viewed 16.6k times · Source

I'm playing wit EF Core 2.1 Preview 2. I have troubles with HasData (Seed) method in OnModelCreating(ModelBuilder modelBuilder)

My model is simple POCO class that has no annotation.

public class Tenant {
    public int TenantID {get; set;}
    public string Name {get; set;}
}

in my DbContext inside OnModelCreating method is DB model defined as

modelBuilder.Entity<Tenant>(e => {
    e.HasKey(m => m.TenantID)
     .HasName("PK_Tenants");

    e.Property(m => m.TenantID)
     .UseSqlServerIdentityColumn();

    e.Property(m => m.Name)
     .IsRequired()
     .HasMaxLength(256);
}

and the seed mehod is defined as:

modelBuilder.Entity<Tenant>().HasData(new []{
   new Tenant {
      TenantID = 0,
      Name = "SystemTenant",
   }
});

During startap, when ctx.Database.Migrate() is run, I got exception: The seed entity for entity type 'Tenant' cannot be added because there was no value provided for the required property 'TenantID

Answer

Tomino picture Tomino · Apr 24, 2018

The exception is little bit misleading. There must be some mechanism inside, that tests required properties so they must be different to a default values.

The only change I had to do was specifying TenantID != 0.

modelBuilder.Entity<Tenant>().HasData(new []{ 
   new Tenant {
      TenantID = 1, // Must be != 0
      Name = "SystemTenant",
   }
});