noblepaulaziz Ответов: 0

Ошибка заполнения данных: произошла ошибка при обновлении записей


Мне чертовски трудно разобраться в проблеме с кодом. У меня есть проект .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

Пожалуйста, что вы имеете в виду?

0 Ответов