我想使用Entity Framework在表中插入或更新一行,具体取决于主键(字符串)是否已存在于表中。
我正在使用以下代码来实现这个目标,该代码是从这里获取的:插入或更新模式。
当行(例如serviceName =“MyService”)已经存在时,它可以正常工作。然后执行UPDATE。但是如果该行不存在,则INSERT失败,并出现以下错误消息:
存储更新、插入或删除语句影响了意外数量的行(0)。自从加载实体以来,可能已修改或删除实体。
非常感谢您的帮助!
我正在使用以下代码来实现这个目标,该代码是从这里获取的:插入或更新模式。
private void InsertOrUpdate(ServiceMonitoring sm)
{
try
{
using (var context = new MyDBEntities())
{
context.Entry(sm).State = sm.serviceName == null ?
EntityState.Added :
EntityState.Modified;
context.SaveChanges();
}
log.Info("ServiceMonitoring updated");
}
catch (Exception ex)
{
log.Error("Error updating ServiceMonitoring");
log.Debug(ex.Message);
}
}
当行(例如serviceName =“MyService”)已经存在时,它可以正常工作。然后执行UPDATE。但是如果该行不存在,则INSERT失败,并出现以下错误消息:
存储更新、插入或删除语句影响了意外数量的行(0)。自从加载实体以来,可能已修改或删除实体。
非常感谢您的帮助!