Ошибка заполнения данных: произошла ошибка при обновлении записей
Мне чертовски трудно разобраться в проблеме с кодом. У меня есть проект .net с Entity Framework в качестве DAL. Я использую MySQL сервер 8.0. Все работает нормально, за исключением, когда я пытаюсь семя данных. Я понимаю эту ошибку, но я перепробовал все, чтобы решить ее, но безрезультатно. Ошибка:
An error occurred while updating the entries. See the inner exception for details.
внутреннее исключение:
MySql.Data.MySqlClient.MySqlException: Cannot add or update a child row: a foreign key constraint fails ("dbs"."branches", CONSTRAINT "FK_Branches_CompanyProfiles_CompanyProfileId" FOREIGN KEY ("CompanyProfileId") REFERENCES "companyprofiles" ("Id") ON DELETE CASCADE ON UPDATE CA)
У меня есть модель домена и исходные данные.
Модель предметной области
public class CompanyProfile { public CompanyProfile() { Branches = new HashSet<Branch>(); } public int Id { get; set; } public string Name { get; set; } public string CompanyCity { get; set; } public string CompanyAddress { get; set; } public string CompanyAddressTwo { get; set; } public string ContactName { get; set; } public string ContactTitle { get; set; } //NAVIGATION public virtual ICollection<CompanyBranch> Branches { get; } }
public class Branch { public int Id { get; set; } public string BranchCity { get; set; } public string BranchName { get; set; } public virtual int CompanyProfileId { get; set; } public decimal BranchTarget { get; set; } //nagivation public virtual CompanyProfile CompanyProfile { get; set; } }
Fluent API для отношений:
class CompanyProfileConfigurations : EntityTypeConfiguration<CompanyProfile> { public CompanyProfileConfigurations() { HasMany(t => t.Branches) .WithRequired(x => x.CompanyProfile) .HasForeignKey(z => z.CompanyProfileId); } }
Семя:
context.CompanyProfiles.AddOrUpdate( c => c.Name, new CompanyProfile { Name = "New Company Profile" } ); context.Branches.AddOrUpdate( b => b.BranchName, new Branch { BranchName = "Main Office", CompanyProfileId = 1, BranchCity = "", BranchTarget = 0m } );
Мы очень ценим вашу помощь
Что я уже пробовал:
Я попробовал google, но не нашел решения
St0rmi
Есть ли шанс, что вы можете проверить/зарегистрировать SQL, который выполняется на сервере?
noblepaulaziz
Нет, но команды update-database работают и могут создавать таблицы. Он выдает исключение только тогда, когда менеджер пакетов пытается выполнить начальную команду.
Когда я засеваю таблицы одну за другой, исключений нет; это происходит только тогда, когда исходные данные поступают в две таблицы одновременно.
#realJSOP
Ну, решение простое - перестаньте это делать.
Gerry Schmitz
Ему не нравится ваша вторичная индексная логика / данные. Вынимайте вещи, пока они не заработают, а потом кладите их обратно.
noblepaulaziz
Пожалуйста, что вы имеете в виду?