gpt4 book ai didi

.net - 在 EF 4 中应用当前值

转载 作者:行者123 更新时间:2023-12-04 13:09:01 24 4
gpt4 key购买 nike

我刚刚在 VS 2010 RC 中使用 EF 4,发现当属性为 bool 类型且新值为 false 时 ApplyCurrentValues 不起作用!!!???

当新值为 true 时它起作用。

我不知道这是一个错误还是我遗漏了什么,但我只是在处理一个非常丑陋的工作:

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

}

}

任何想法或更好的解决方法?

最佳答案

您附加了一个新的 Product使用所有 bool 属性的默认值 (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();
}
}

即使您不喜欢这个,也可以尝试一下,看看它是否有效。

现在在我看来,您一开始就试图避免加载产品。但是这样做会破坏您的代码。因此,尽管我对尝试“优化”更新(您正在此处加载一条记录,并且更新发生的频率远低于选择)提出质疑,但让我们同意从有效的内容开始。

如果这有效,它会告诉您如果您坚持避免加载产品进行更新,您需要做什么:您需要 mark all properties as modified .

关于.net - 在 EF 4 中应用当前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2272325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com