Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
.net EF 4中的ApplyCurrentValue_.net_Entity Framework_Visual Studio 2010 - Fatal编程技术网

.net EF 4中的ApplyCurrentValue

.net EF 4中的ApplyCurrentValue,.net,entity-framework,visual-studio-2010,.net,Entity Framework,Visual Studio 2010,我刚刚在VS 2010 RC中玩EF 4,刚刚发现当属性类型为bool且新值为false时,ApplyCurrentValues不起作用!!!??? 当新的值为真时,它就会工作。 我不知道这是一个bug还是我遗漏了一些东西,但我只是用一个非常难看的工作: 有什么想法或更好的解决方法吗?您附加了一个新的产品,其中包含所有布尔属性的默认值(false)。然后将其中一个值设置为false。毫不奇怪,它不会更新;你还没有真正改变它!在我看来,您可以通过删除一些代码来解决此问题: public vo

我刚刚在VS 2010 RC中玩EF 4,刚刚发现当属性类型为bool且新值为false时,ApplyCurrentValues不起作用!!!???
当新的值为真时,它就会工作。
我不知道这是一个bug还是我遗漏了一些东西,但我只是用一个非常难看的工作:


有什么想法或更好的解决方法吗?

您附加了一个新的
产品
,其中包含所有布尔属性的默认值(false)。然后将其中一个值设置为false。毫不奇怪,它不会更新;你还没有真正改变它!在我看来,您可以通过删除一些代码来解决此问题:

public void UpdateProduct(Product updatedProduct)
{
    using (model)
    {
        Product originalProduct = model.Products.Single(p => p.ProductID == updatedProduct.ProductID);
        model.Products.ApplyCurrentValues(updatedProduct);
        model.SaveChanges();
    }
}
即使你不喜欢这个,试试看它是否有效

现在在我看来,你是试图避免加载的产品放在首位。但是这样做破坏了你的密码。因此,尽管我对尝试“优化”更新(您在这里加载了一条记录,并且更新发生的频率比选择的要低得多)提出了疑问,但让我们同意从一些有效的方法开始

如果这样做有效,它会告诉您如果坚持不加载产品进行更新,您需要做什么:您需要。

修改:

public void UpdateProduct(Product updatedProduct)
{
    using (model)
    {
        model.Products.Single(p => p.ProductID == updatedProduct.ProductID);
        model.Products.ApplyCurrentValues(updatedProduct);
        model.SaveChanges();
    }
}

我给了你另一个修正(我回答的最后一句)。你是在投反对票之前试过的,还是在没有阅读全部答案的情况下投了反对票?该准则的目的是要准确地说明问题所在。很抱歉,否决了投票:(你能编辑你的答案,这样我就可以向上投票吗?谢谢你也解决了我的问题。@ali62b,我几乎不太关心向下投票,因为我这么做,你似乎没有尝试我的建议,因此,仍然有你的问题。如果你已经尝试过,现在有了可用的代码,那太好了!@Craig,你有没有想过一种方法使这项技术成为一种新的技术通用模式?
public void UpdateProduct(Product updatedProduct)
{
    using (model)
    {
        model.Products.Single(p => p.ProductID == updatedProduct.ProductID);
        model.Products.ApplyCurrentValues(updatedProduct);
        model.SaveChanges();
    }
}