3

我有以下实体模型:

实体模型

我添加了一堆任务并开始处理这些任务。每次任务完成后,我想记录有关它的信息。

我使用以下代码执行此操作:

TASK scheduledTask = entities.TASKs.First(x => x.TASK_NAME == e.ClassName);
scheduledTask.NEXT_RUN = e.NextRun;
entities.SaveChanges();

TASK_LOG logMsg = new TASK_LOG()
{
    TASK = scheduledTask,
    MESSAGE = e.TaskResult.Message,
    STATUS = e.TaskResult.Status ? "Successful" : "Failure",
    TIMESTAMP = e.CompletedTime
};
entities.TASK_LOG.AddObject(logMsg);
entities.SaveChanges();

但是,我收到一个异常,指出我无法修改 TASK_LOG 对象的 ID 属性。我看不到我的代码将如何修改logMsg对象 ID 属性。

注意:两个实体中的 ID 属性均由数据库生成并设置为StoreGeneratedPattern- Identity。

编辑:

第二次运行 - 现在我收到关于在第一次SaveChanges通话时打开/可用连接的错误。

第 3 次运行 - 出现错误 Store update、insert 或 delete 语句影响了意外数量的行 (0)。在最后一次SaveChanges通话中。

这种错误不一致使其难以修复。

4

1 回答 1

0

我怀疑问题可能是因为您在通过 AddObject 附加到上下文之前设置了 logMsg.TASK 属性。由于您可以访问外键,因此我建议使用 TASK_ID 属性而不是 TASK 导航属性来创建引用。请尝试将此代码替换为您的 logMsg:

TASK_LOG logMsg = new TASK_LOG()
{
    TASK_ID = scheduledTask.ID,
    MESSAGE = e.TaskResult.Message,
    STATUS = e.TaskResult.Status ? "Successful" : "Failure",
    TIMESTAMP = e.CompletedTime
};
于 2012-08-02T04:36:20.380 回答