Вставка данных в таблицу объектов значений

#asp.net-core-webapi #entity-framework-migrations

#asp.net-ядро-webapi #entity-framework-миграции #asp.net-core-webapi

Вопрос:

Ввод данных ПОЧТАЛЬОНОМ, но произошла какая-то ошибка.

Мой код приведен ниже:

 public async Task<BusinessProfile> Save(string ID,bool Status,string Logo,string TaxNumber,string StateRegisterNumber,string StreetName,string Number
            ,string Complement,string PostalCode,string Neighborhood,string City,string State,string AreaCode,string Department
            ,string PhoneNo,string Type,string Website,string EDepartment,string EmailAddress)
        {

            try
            {
                int EnumPhoneNumber = 0;
                string[] values = Enum.GetNames(typeof(PhoneNumberEnum.PhoneNumber));

                if (values[0] == Type)
                {
                    EnumPhoneNumber = (int)PhoneNumber.FixedPhone;
                }
                else if (values[1] == Type)
                {
                    EnumPhoneNumber = (int)PhoneNumber.MobilePhone;
                }

                var businessProfile = new BusinessProfile() { ID = ID, Status = Status, Logo = Logo, TaxNumber = TaxNumber, StateRegisterNumber = StateRegisterNumber, Website = Website };
                businessProfile.AssignAddress(new Address(StreetName, Number, Complement, PostalCode, Neighborhood, City, State));
                businessProfile.AssignPhones(new Phones(Convert.ToString(EnumPhoneNumber), AreaCode, PhoneNo, Department));
                businessProfile.AssignEmail(new Emails(EmailAddress, EDepartment));

                //_db.Add(businessProfile);


                Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry<BusinessProfile> x = await _db.AddAsync(businessProfile);

                // _db.SaveChanges();


                //await _db.BusinessProfiles.AddAsync(businessProfile);
                await _db.SaveChangesAsync();
                return businessProfile;
            }
            catch(Exception ex)
            {
                throw ex;
            }


        }
  

Вывод (Ошибка:):

При обработке запроса произошло необработанное исключение.

InvalidOperationException : Объект типа BusinessProfile совместно использует таблицу BusinessProfiles с объектами типа Address , но нет объекта этого типа с тем же значением ключа, которое было помечено как Added . Рассмотрите возможность использования DbContextOptionsBuilder.EnableSensitiveDataLogging , чтобы увидеть ключевые значения.

Комментарии:

1. Я получил решение

Ответ №1:

сохранение общедоступной асинхронной задачи (BusinessProfile bp) { try { int EnumPhoneNumber = 0; string[] values = Перечисление.GetNames(typeof(PhoneNumberEnum.Номер телефона ));

             if (values[0] == bp.Phones.Type)
            {
                EnumPhoneNumber = (int)PhoneNumber.FixedPhone;
            }
            else if (values[1] == bp.Phones.Type)
            {
                EnumPhoneNumber = (int)PhoneNumber.MobilePhone;
            }

            var businessProfile = new BusinessProfile() { ID = bp.ID, IsActive = bp.IsActive, Logo = bp.Logo, TaxNumber = bp.TaxNumber, StateRegisterNumber = bp.StateRegisterNumber, Website = bp.Website };
            businessProfile.Address = new Address(bp.Address.StreetName, bp.Address.Number, bp.Address.Complement, bp.Address.PostalCode, bp.Address.Neighborhood, bp.Address.City, bp.Address.State);
            businessProfile.Phones = new Phones(Convert.ToString(EnumPhoneNumber), bp.Phones.AreaCode, bp.Phones.PhoneNumber, bp.Phones.Department);
            businessProfile.Emails = new Emails(bp.Emails.EmailAddress, bp.Emails.Department);

            Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry<BusinessProfile> x = await _db.AddAsync(businessProfile);
            await _db.SaveChangesAsync();
            return businessProfile;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }