Asked by:
Unable to seed data, getting error message: The seed entity for entity type 'Logs' cannot be added because another seed entity with the same key value for {'LogsId'} has already been added

Question
-
User-1880744392 posted
Unable to seed db, The seed entity for entity type 'Logs' cannot be added because another seed entity with the same key value for {'LogsId'} has already been added:
Here is the code:
I have commented out the Has Data method as i decided to manually enter it in so I can finish the project but would be good for future refrence.
public partial class UmlautDirectoryContext : DbContext { public UmlautDirectoryContext() { } public UmlautDirectoryContext(DbContextOptions<UmlautDirectoryContext> options) : base(options) { } public virtual DbSet<Directories> Directories { get; set; } public virtual DbSet<Logs> Logs { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { } } protected override void OnModelCreating(ModelBuilder modelBuilder) { #region// Seed Directory data //modelBuilder.Entity<Directories>().HasData( // new Directories { DirectoriesId = 1, Company = "AB&C INTERNATIONAL", Level = "8", Suite = "806" }, // new Directories { DirectoriesId = 2, Company = "AXA Insurance Agency Pty Ltd", Level = "1", Suite = "104" }, // new Directories { DirectoriesId = 3, Company = "Alex & Sons Consulting Pty Ltd", Level = "10", Suite = "1002" }, // new Directories { DirectoriesId = 4, Company = "Altura Care", Level = "5", Suite = "505" }, // new Directories { DirectoriesId = 5, Company = "Auroral Design", Level = "11", Suite = "1105" }, // new Directories { DirectoriesId = 6, Company = "Australia Burger Pty Ltd", Level = "6", Suite = "604" }, // new Directories { DirectoriesId = 7, Company = "Austra Cats Pty Ltd", Level = "9", Suite = "901" }, // new Directories { DirectoriesId = 8, Company = "Armstrong Legal Consulting", Level = "6", Suite = "605" }, // new Directories { DirectoriesId = 9, Company = "AXE recruitment", Level = "4", Suite = "401" }, // new Directories { DirectoriesId = 10, Company = "Balance Life", Level = "6", Suite = "605" }, // new Directories { DirectoriesId = 11, Company = "Balance Recreation", Level = "3", Suite = "302" }, // new Directories { DirectoriesId = 12, Company = "Brook & Pown Co", Level = "3", Suite = "305" }, // new Directories { DirectoriesId = 13, Company = "BTC Ready Limited", Level = "8", Suite = "805" }, // new Directories { DirectoriesId = 14, Company = "Carramel Consulting", Level = "6", Suite = "606" }, // new Directories { DirectoriesId = 15, Company = "Carrington Financial", Level = "11", Suite = "1105" }, // new Directories { DirectoriesId = 16, Company = "Casual Meal", Level = "2", Suite = "204" }, // new Directories { DirectoriesId = 17, Company = "Centenary Legal Practice", Level = "3", Suite = "306" }, // new Directories { DirectoriesId = 18, Company = "Central Accounting & Taxation", Level = "1", Suite = "105" }, // new Directories { DirectoriesId = 19, Company = "Clever Mortgages", Level = "9", Suite = "904" }, // new Directories { DirectoriesId = 20, Company = "Clearly 90's Pty", Level = "6", Suite = "605" }, // new Directories { DirectoriesId = 21, Company = "Consult ME", Level = "6", Suite = "603" }, // new Directories { DirectoriesId = 22, Company = "Corporate Technology Services", Level = "2", Suite = "202" }, // new Directories { DirectoriesId = 23, Company = "Egis Papa", Level = "7", Suite = "701" }, // new Directories { DirectoriesId = 24, Company = "FERMER Insurance Specialists", Level = "1", Suite = "104" }, // new Directories { DirectoriesId = 25, Company = "Fire Shock Pty Ltd", Level = "10", Suite = "1005" }, // new Directories { DirectoriesId = 26, Company = "Global VDirectoriesIdeo Pty Ltd", Level = "2", Suite = "201" }, // new Directories { DirectoriesId = 27, Company = "Golf Ball Specialist", Level = "3", Suite = "301" }, // new Directories { DirectoriesId = 28, Company = "GRTO Institute", Level = "1", Suite = "101" }, // new Directories { DirectoriesId = 29, Company = "Immigration Experts Pty Ltd", Level = "8", Suite = "801" }, // new Directories { DirectoriesId = 30, Company = "Instragram", Level = "9", Suite = "904" }, // new Directories { DirectoriesId = 31, Company = "Kenny & Associates Lawyers", Level = "9", Suite = "901" }, // new Directories { DirectoriesId = 32, Company = "Leadership Education Australia", Level = "7", Suite = "703" }, // new Directories { DirectoriesId = 33, Company = "LMAO Lawyers Pty Ltd", Level = "7", Suite = "709" }, // new Directories { DirectoriesId = 34, Company = "Mars Pty Ltd", Level = "2", Suite = "201" }, // new Directories { DirectoriesId = 35, Company = "Muri Muri Legal Practice", Level = "8", Suite = "802" }, // new Directories { DirectoriesId = 36, Company = "Peaceful Strata Management", Level = "8", Suite = "809" }, // new Directories { DirectoriesId = 37, Company = "Pinterested", Level = "1", Suite = "103" }, // new Directories { DirectoriesId = 38, Company = "Simple Supply", Level = "7", Suite = "705" }, // new Directories { DirectoriesId = 39, Company = "SXS Advisory Group", Level = "9", Suite = "901" }, // new Directories { DirectoriesId = 40, Company = "Skukura", Level = "11", Suite = "1104" }, // new Directories { DirectoriesId = 41, Company = "Sports Focus Physiotherapy", Level = "2", Suite = "204" }, // new Directories { DirectoriesId = 42, Company = "Think Harder", Level = "7", Suite = "705" }, // new Directories { DirectoriesId = 43, Company = "Tripple P", Level = "11", Suite = "1101" }, // new Directories { DirectoriesId = 44, Company = "Tri Logic", Level = "4", Suite = "405" }, // new Directories { DirectoriesId = 45, Company = "Umlaut", Level = "1", Suite = "101" }, // new Directories { DirectoriesId = 46, Company = "2hats", Level = "7", Suite = "209" }, // new Directories { DirectoriesId = 47, Company = "3D printer shop", Level = "1", Suite = "104" } //); //modelBuilder.Entity<Logs>().HasData( // new Logs // { // LogsId = 1, // DirectoriesId = 1, // Field = "Company", // Sender = "AB&C International", // Receiver = "AB&C INTERNATIONAL", // Date = DateTime.Parse( // "2019-01-01", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal) // }, // new Logs // { // LogsId = 1, // DirectoriesId = 1, // Field = "Level", // Sender = "9", // Receiver = "8", // Date = DateTime.Parse( // "2019-01-02", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal) // }, // new Logs // { // LogsId = 1, // DirectoriesId = 1, // Field = "Suite", // Sender = "901", // Receiver = "806", // Date = DateTime.Parse( // "2019-01-03", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal) // } //); #endregion modelBuilder.Entity<Directories>(entity => { entity.Property(e => e.DirectoriesId).HasColumnName("DirectoriesID"); }); modelBuilder.Entity<Logs>(entity => { entity.HasIndex(e => e.DirectoriesId); entity.Property(e => e.LogsId).HasColumnName("LogsID"); entity.Property(e => e.DirectoriesId).HasColumnName("DirectoriesID"); entity.HasOne(d => d.Directories) .WithMany(p => p.Logs) .HasForeignKey(d => d.DirectoriesId); }); OnModelCreatingPartial(modelBuilder); } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); }
Tuesday, December 24, 2019 12:58 AM
All replies
-
User303363814 posted
Have you tried using the Seed method?
The AddOrUpdate method is particularly useful to prevent data being added twice.
Tuesday, December 24, 2019 4:10 AM -
User-17257777 posted
Hi TroydonAnabolic,
I can reproduce your problem with ef core. It seems that you didn't define a Primary key in the Logs class. The primary key value needs to be specified even if it's usually generated by the database. You can refer to the Limitations of model seed data
I add a Id as a Primary key to the Logs class, and when I use the command add-migration init, it successfully created the migration file.
public class Logs { public int Id { get; set; } public int LogsId { get; set; } public int DirectoriesId { get; set; } public string Field { get; set; } public string Sender { get; set; } public string Receiver { get; set; } public DateTime Date { get; set; } public virtual Directories Directories { get; set; } } public class Directories { public int DirectoriesId { get; set; } public string Company { get; set; } public string Level { get; set; } public string Suite { get; set; } public virtual List<Logs> Logs { get; set; } }
public partial class UmlautDirectoryContext : DbContext { public UmlautDirectoryContext() { } public UmlautDirectoryContext(DbContextOptions<UmlautDirectoryContext> options) : base(options) { } public DbSet<Logs> Logs { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { } } protected override void OnModelCreating(ModelBuilder modelBuilder) { #region// Seed Directory data modelBuilder.Entity<Directories>().HasData( new Directories { DirectoriesId = 1, Company = "AB&C INTERNATIONAL", Level = "8", Suite = "806" }, new Directories { DirectoriesId = 2, Company = "AXA Insurance Agency Pty Ltd", Level = "1", Suite = "104" }, new Directories { DirectoriesId = 3, Company = "Alex & Sons Consulting Pty Ltd", Level = "10", Suite = "1002" }, new Directories { DirectoriesId = 4, Company = "Altura Care", Level = "5", Suite = "505" }, new Directories { DirectoriesId = 5, Company = "Auroral Design", Level = "11", Suite = "1105" }, new Directories { DirectoriesId = 6, Company = "Australia Burger Pty Ltd", Level = "6", Suite = "604" }, new Directories { DirectoriesId = 7, Company = "Austra Cats Pty Ltd", Level = "9", Suite = "901" }, new Directories { DirectoriesId = 8, Company = "Armstrong Legal Consulting", Level = "6", Suite = "605" }, new Directories { DirectoriesId = 9, Company = "AXE recruitment", Level = "4", Suite = "401" }, new Directories { DirectoriesId = 10, Company = "Balance Life", Level = "6", Suite = "605" }, new Directories { DirectoriesId = 11, Company = "Balance Recreation", Level = "3", Suite = "302" }, new Directories { DirectoriesId = 12, Company = "Brook & Pown Co", Level = "3", Suite = "305" }, new Directories { DirectoriesId = 13, Company = "BTC Ready Limited", Level = "8", Suite = "805" }, new Directories { DirectoriesId = 14, Company = "Carramel Consulting", Level = "6", Suite = "606" }, new Directories { DirectoriesId = 15, Company = "Carrington Financial", Level = "11", Suite = "1105" }, new Directories { DirectoriesId = 16, Company = "Casual Meal", Level = "2", Suite = "204" }, new Directories { DirectoriesId = 17, Company = "Centenary Legal Practice", Level = "3", Suite = "306" }, new Directories { DirectoriesId = 18, Company = "Central Accounting & Taxation", Level = "1", Suite = "105" }, new Directories { DirectoriesId = 19, Company = "Clever Mortgages", Level = "9", Suite = "904" }, new Directories { DirectoriesId = 20, Company = "Clearly 90's Pty", Level = "6", Suite = "605" }, new Directories { DirectoriesId = 21, Company = "Consult ME", Level = "6", Suite = "603" }, new Directories { DirectoriesId = 22, Company = "Corporate Technology Services", Level = "2", Suite = "202" }, new Directories { DirectoriesId = 23, Company = "Egis Papa", Level = "7", Suite = "701" }, new Directories { DirectoriesId = 24, Company = "FERMER Insurance Specialists", Level = "1", Suite = "104" }, new Directories { DirectoriesId = 25, Company = "Fire Shock Pty Ltd", Level = "10", Suite = "1005" }, new Directories { DirectoriesId = 26, Company = "Global VDirectoriesIdeo Pty Ltd", Level = "2", Suite = "201" }, new Directories { DirectoriesId = 27, Company = "Golf Ball Specialist", Level = "3", Suite = "301" }, new Directories { DirectoriesId = 28, Company = "GRTO Institute", Level = "1", Suite = "101" }, new Directories { DirectoriesId = 29, Company = "Immigration Experts Pty Ltd", Level = "8", Suite = "801" }, new Directories { DirectoriesId = 30, Company = "Instragram", Level = "9", Suite = "904" }, new Directories { DirectoriesId = 31, Company = "Kenny & Associates Lawyers", Level = "9", Suite = "901" }, new Directories { DirectoriesId = 32, Company = "Leadership Education Australia", Level = "7", Suite = "703" }, new Directories { DirectoriesId = 33, Company = "LMAO Lawyers Pty Ltd", Level = "7", Suite = "709" }, new Directories { DirectoriesId = 34, Company = "Mars Pty Ltd", Level = "2", Suite = "201" }, new Directories { DirectoriesId = 35, Company = "Muri Muri Legal Practice", Level = "8", Suite = "802" }, new Directories { DirectoriesId = 36, Company = "Peaceful Strata Management", Level = "8", Suite = "809" }, new Directories { DirectoriesId = 37, Company = "Pinterested", Level = "1", Suite = "103" }, new Directories { DirectoriesId = 38, Company = "Simple Supply", Level = "7", Suite = "705" }, new Directories { DirectoriesId = 39, Company = "SXS Advisory Group", Level = "9", Suite = "901" }, new Directories { DirectoriesId = 40, Company = "Skukura", Level = "11", Suite = "1104" }, new Directories { DirectoriesId = 41, Company = "Sports Focus Physiotherapy", Level = "2", Suite = "204" }, new Directories { DirectoriesId = 42, Company = "Think Harder", Level = "7", Suite = "705" }, new Directories { DirectoriesId = 43, Company = "Tripple P", Level = "11", Suite = "1101" }, new Directories { DirectoriesId = 44, Company = "Tri Logic", Level = "4", Suite = "405" }, new Directories { DirectoriesId = 45, Company = "Umlaut", Level = "1", Suite = "101" }, new Directories { DirectoriesId = 46, Company = "2hats", Level = "7", Suite = "209" }, new Directories { DirectoriesId = 47, Company = "3D printer shop", Level = "1", Suite = "104" } ); modelBuilder.Entity<Logs>().HasData( new Logs { Id = 1, LogsId = 1, DirectoriesId = 1, Field = "Company", Sender = "AB&C International", Receiver = "AB&C INTERNATIONAL", Date = DateTime.Parse( "2019-01-01", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal) }, new Logs { Id = 2, LogsId = 1, DirectoriesId = 1, Field = "Level", Sender = "9", Receiver = "8", Date = DateTime.Parse( "2019-01-02", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal) }, new Logs { Id = 3, LogsId = 1, DirectoriesId = 1, Field = "Suite", Sender = "901", Receiver = "806", Date = DateTime.Parse( "2019-01-03", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal) } ); #endregion modelBuilder.Entity<Directories>(entity => { entity.Property(e => e.DirectoriesId).HasColumnName("DirectoriesID"); }); modelBuilder.Entity<Logs>(entity => { entity.HasKey(e => e.Id); entity.HasIndex(e => e.DirectoriesId); entity.Property(e => e.LogsId).HasColumnName("LogsID"); entity.Property(e => e.DirectoriesId).HasColumnName("DirectoriesID"); entity.HasOne(d => d.Directories) .WithMany(p => p.Logs) .HasForeignKey(d => d.DirectoriesId); }); OnModelCreatingPartial(modelBuilder); } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); }
Best Regards,
Jiadong Meng
Wednesday, December 25, 2019 4:23 AM