.net EF 4中的ApplyCurrentValue
我刚刚在VS 2010 RC中玩EF 4,刚刚发现当属性类型为bool且新值为false时,ApplyCurrentValues不起作用!!!???.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
当新的值为真时,它就会工作。
我不知道这是一个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();
}
}