我有一个名为CommandResults的表,我想更新条目存在的位置,当它们不存在时我想添加它们。
CommandResults包含CommandID的外键列,该列引用名为Commands
的表EF正在尝试将重复的密钥添加到命令中,我不知道为什么。我不想触摸这张桌子。
CommandResults中没有条目,因此对于add,orig为null。但为什么它试图搞乱表命令?
列表从另一个类传递。每个CommandResult都是一个新实例,而不是从EF中提取。
public void UpsertCommandResults(List<CommandResult> commandResults)
{
try
{
foreach (CommandResult result in commandResults)
{
CommandResult orig = db.CommandResults.Where(x => x.CommandID.Equals(result.CommandID) && x.OutputDescription.Equals(result.OutputDescription)).FirstOrDefault();
if (orig == null)
{
db.CommandResults.Add(result);
db.SaveChanges();
}
else
{
orig.AlertTypeID = result.AlertTypeID;
orig.ModifiedDatetime = result.ModifiedDatetime;
orig.Output = result.Output;
orig.OutputDescription = result.OutputDescription;
db.Entry(orig).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
}
}
}
catch (Exception ex)
{
Core.Logging.SimpleLog.Log(ex);
}
}