EF试图添加到表外我要更新的表

时间:2015-10-12 17:30:35

标签: c# entity-framework

我有一个名为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);
    }
}

0 个答案:

没有答案