ali*_*62b 6 .net entity-framework visual-studio-2010
我刚刚在VS 2010 RC中玩EF 4,刚发现当属性类型为bool并且新值为false时,ApplyCurrentValues不起作用!!!
并且它在新值为真时起作用.
我不知道这是一个错误还是我错过了一些东西,但我只是在处理一个非常丑陋的工作:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法或更好的解决方案?
Cra*_*ntz 20
您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();
}
}
Run Code Online (Sandbox Code Playgroud)
即使你不喜欢这样,试试看它是否有效.
在我看来,你正试图避免首先加载产品.但这样做会破坏你的代码.因此,虽然我质疑尝试"优化"更新(你在这里加载一条记录,并且更新发生的次数少得多,然后选择),让我们同意从一些有用的东西开始.
如果这样做,它会告诉您如果您坚持避免加载产品以进行更新需要执行的操作:您需要将所有属性标记为已修改.
归档时间: |
|
查看次数: |
14121 次 |
最近记录: |