Обновите базу данных вместо добавления строки в контроллер MVC - PullRequest
0 голосов
/ 04 мая 2019

У меня есть код, который работает для добавления новой строки в таблицу профиля моего сайта, но когда кто-то пытается обновить профиль, я не уверен, как с этим справиться.Я обновляю несколько таблиц с контроллера.

У меня следующий код.Я проверяю в таблице клиентов, если идентификатор уже присутствует, если да, то я изменяю состояние объекта, который будет изменен (я нашел этот код онлайн).Я закомментировал следующую строку, потому что она выдала мне ошибку.

Этот код не выдает никакой ошибки при сохранении изменений, но не обновляет базу данных.

    var oldCustomer = _context.Customers.Find(objSv.CustomerServices.strUserID);
     var oldCustomerServices = _context.CustomerServices;

    if (oldCustomer == null) {
      _context.Customers.Add(obj);
      _context.CustomerServices.Add(objSv.CustomerServices);
        }
     else
     {
       _context.Entry(oldCustomer).State = EntityState.Modified;
 //  _context.Entry(oldCustomerServices).State = EntityState.Modified;
            }

   _context.SaveChanges();

Я быкак база данных, которая будет обновлена ​​новым объектом.Это мои новые объекты с новыми данными

        CustomerProfile obj = GetCustomerProfile();
        ServiceProvider objSv = GetServiceProvider();`enter code here`

1 Ответ

0 голосов
/ 04 мая 2019

Проблема в следующей строке:

var oldCustomerServices = _context.CustomerServices;

Здесь _context.CustomerServices не является CustomerServices объектом.Это DbSet из CustomerService, но вы рассматриваете как CustomerServices объект.

Я думаю, ваш код должен выглядеть следующим образом:

var oldCustomerServices = _context.CustomerServices.Find(CustomerServices.Id); // <-- I have assumed primary key name of `CustomerServices` is `Id`. If anything else then use that.

if(oldCustomerServices == null)
{
    CustomerServices newCustomerServices = new CustomerServices()
    {
      // Populate the customer service property here
    }
    _context.CustomerServices.Add(newCustomerServices);
} 
else
{
     _context.Entry(oldCustomerServices).State = EntityState.Modified;
}


var oldCustomer = _context.Customers.Find(objSv.CustomerServices.strUserID);

if (oldCustomer == null) 
{
   Customer newCustomer = new Customer()
   {
       // Populate the customer property here
   }

   _context.Customers.Add(newCustomer);
  _context.CustomerServices.Add(objSv.CustomerServices);
}
else
{
  _context.Entry(oldCustomer).State = EntityState.Modified;
}

_context.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...