ADO.NET实体框架SaveChanges无法正常工作

时间:2010-10-26 15:15:14

标签: .net entity-framework ado.net-entity-data-model

我有一个使用ADO.NET实体框架的.NET 4 WinForms应用程序。一些完美运作的代码决定停止工作,虽然我已经试图找出可能导致这种情况的改变,但我很难过。这段代码看起来非常实用,WAS按预期工作。

有人有什么想法吗?这是代码:

using (var pe = new ProposalEstimateEntities()) 
{
    var tmc = GetToolingAndMaterialsCost(taskId, Constants.Materials);

    if (tmc == null) return;

    tmc.Amount = amount;
    pe.SaveChanges();
}

tmc变量在方法调用之后保存ToolingAndMaterialsCost实体对象,因此不需要将对象添加到上下文中。 SaveChanges()使用新金额保存对象,但不保存。没有异常被抛出。代码执行就像它愚蠢而快乐,但数据库中没有任何变化,当我返回显示数据的控件时,旧的预编辑数据就在那里。

这非常令人沮丧,任何帮助将不胜感激。

麦克

3 个答案:

答案 0 :(得分:1)

如何在没有引用ObjectContext'pe'的情况下加载tmc?看起来你可能正在从不同的上下文中加载它?

如果是这样,那将无效。上下文跟踪已更改的实体。你'pe'上下文没有按照它的外观跟踪任何实体,因为除了SaveChanges调用之外它从未被引用过。

答案 1 :(得分:0)

我将逐步调试w /以确保tmc不为null。如果tmc确实是具有Amount字段的实体对象,那应该可以正常工作并且问题可能在其他地方。来自GetToolingAndMaterialsCost方法的代码怎么回事?

答案 2 :(得分:0)

卫生署!

对GetToolingAndMaterialsCost的调用使用了与方法中不同的ProposalEstimateEntities对象,因此我只是将实体对象添加到数据上下文中,并且它工作正常。当我重构时,我自己就开始了。