我有一些代码可以将新行添加到网站配置文件表中,但是当有人尝试更新配置文件时,我不确定该如何处理。我正在从控制器更新多个表。
我有以下代码。我在客户表中检查ID是否已存在,如果是,则更改要修改的实体的状态。(我在网上找到了此代码)。我注释掉了下一行,因为它给了我一个错误。
此代码在保存更改时不会引发任何错误,但不会更新数据库。
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`
答案 0 :(得分:0)
问题在以下行:
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();