Мне нужно обновить / сохранить данные в БД, но столкнулся с проблемой: во время тестирования в Postman я проверил этот JSON:
{
"contactId": "1",
"contactName": "t4jnesfdv",
"company": {
"companyName":"a546fghf"
}
}
Он обновляет / сохраняет выбранную запись в таблице Contact, но такжедобавить новую запись в другую таблицу Company.
Во время тестирования в Postman я проверил этот JSON:
{
"contactId": "1",
"contactName": "t4jnesfdv",
"company": {
"companyId":"2",
"companyName":"a546fghf"
}
}
Получить 500 Внутренняя ошибка сервера.
Интерфейс
public interface IContactService
{
Task<bool> SaveContact(ContactModel contact);
}
Сервис
public async Task<bool> SaveContact(ContactModel contactModel)
{
using (ContactDBContext db = new ContactDBContext())
{
Contacts contact = db.Contacts.Where
(x => x.ContactId == contactModel.ContactId).FirstOrDefault();
if (contact == null)
{
contact = new Contacts()
{
ContactName = contactModel.ContactName,
Company = contactModel.Company
};
db.Contacts.Add(contact);
}
else
{
contact.ContactName = contactModel.ContactName;
contact.Company = contactModel.Company;
}
return await db.SaveChangesAsync() >= 1;
}
}
Контроллер
[Route("api/[controller]")]
public class ContactController : Controller
{
[HttpPost]
[Route("SaveContact")]
public async Task<IActionResult> SaveContact([FromBody] ContactModel model)
{
return Ok(await _contactService.SaveContact(model));
}
}
Модели
public class CompanyModel
{
public int CompanyId { get; set; }
public string CompanyName { get; set; }
public ICollection<Contacts> Contacts { get; set; }
}
public class ContactModel
{
public int ContactId { get; set; }
public string ContactName { get; set; }
public Company Company { get; set; }
}
Объекты
public class Company
{
public int CompanyId { get; set; }
[StringLength(150)]
public string CompanyName { get; set; }
public ICollection<Contacts> Contacts { get; set; }
}
public class Contacts
{
[Key]
public int ContactId { get; set; }
public string ContactName { get; set; }
public Company Company { get; set; }
}
Я ожидаю сохранения /обновить записи в таблице. Контакт с существующими компаниями в таблице Company, без добавления новых записей в таблицу Company