在值对象表中插入数据

时间:2019-04-24 14:40:43

标签: asp.net-core-webapi ef-migrations

通过POSTMAN插入数据,但是发生了一些错误。

我的代码如下:

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 个答案:

答案 0 :(得分:0)

公共异步任务保存(BusinessProfile bp)         {             尝试             {                 int EnumPhoneNumber = 0;                 字符串[]值= Enum.GetNames(typeof(PhoneNumberEnum.PhoneNumber));

            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;
        }
    }