Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架更新未触发。怪事比比皆是_C#_Entity Framework 4 - Fatal编程技术网

C# 实体框架更新未触发。怪事比比皆是

C# 实体框架更新未触发。怪事比比皆是,c#,entity-framework-4,C#,Entity Framework 4,我对EF的使用相当满意,我的大部分东西都“正常工作”。不幸的是,我在一个简单的更新中遇到了一个真正的难题。我认为这可能是一个典型的问题,但我想看看是否有其他人有一些意见 以下是相关代码:- using (var ctx = new jetsetrEntities()) { var teddies = ctx.Teddies.First(i => i.Code == metric.Teddy); _log.Info("Teddies entertai

我对EF的使用相当满意,我的大部分东西都“正常工作”。不幸的是,我在一个简单的更新中遇到了一个真正的难题。我认为这可能是一个典型的问题,但我想看看是否有其他人有一些意见

以下是相关代码:-

using (var ctx = new jetsetrEntities())
    {
        var teddies = ctx.Teddies.First(i => i.Code == metric.Teddy);

        _log.Info("Teddies entertainment direct from data", teddies.Entertainment);

        teddies.Value = Convert.ToDecimal(value);
        teddies.Entertainment = Convert.ToDecimal(entertainment);

        _log.Info("Now, has it changed?", teddies.Entertainment);           

        ctx.SaveChanges();

        _log.Info("After the save...", teddies.Entertainment);
    }
}
日志输出显示
var-teddies
工作正常,并返回
teddies.Entertainment
值,在本例中为
0.00
。然后我尝试设置对象上下文的值-将十进制转换为整数,以防万一

但是现在,
teddies.Entertainment
是空的/空的,
ctx.SaveChanges()实际上什么都不做。没有错误,但是从日志中我可以看到一些奇怪的事情正在发生,数据库没有更新

有人能指出我的愚蠢吗

一如既往,我们感谢您的帮助

克里斯

编辑1

谢谢你,基林斯沃思和格特·阿诺德。我添加了一个
try/catch
,并将
entertainment
value
变量输入为十进制,如下所示:-

try
{
    using (var ctx = new jetsetrEntities())
    {
        var teddy = ctx.Teddies.First(i => i.Code == metric.Teddy);

        _log.Info("[1] teddy with entertainment={0}", teddy.Entertainment);

        teddy.Value = value;
        teddy.Entertainment = entertainment;

        _log.Info("[2] Now, has it changed? {0}", teddy.Entertainment);

        ctx.SaveChanges();

        _log.Info("[3] After the save... {0}", teddy.Entertainment);
    }
} 
catch(Exception exception)
{
    _log.Info("Exception occured {0}", exception.Message);
}

我也不例外,
teddy.Entertainment
在本例中作为“31”输出到日志中。我想知道小数点在哪里?"31.00"?. 不幸的是,数据仍然没有保存到数据库中。

对我来说,这是一场难以置信的灾难。在泰迪熊第一次被保存之后(过去是,现在一直是),后来我传递了一个空的泰迪熊对象,以用于另一个目的。草率的代码=愚蠢的错误。史蒂夫,非常感谢-请添加一个答案,我将其标记为correc

泰迪熊的类型是什么。
Entertainment
field?
Convert.ToDecimal(entertainment)
返回什么?teddies实际上只有一个teddy,只是有点误导。你有没有试着用try/catch(EntityCommandExecutionException e)来包装它,看看SaveChanges()是否正确执行?@Andrei'teddies.entertainment'是十进制的。我想我没有真正回答你的问题。发布您自己的答案并接受您自己的:)