2016-09-26 108 views
-2
public void VendreProduit(int idproduit, int idcentre) 
{ 
    var produit = db.Produits.FirstOrDefault(p => p.ProduitId == idproduit); 
    int qtn = produit.ProduitQuantite - 1; 

    db.Configuration.ValidateOnSaveEnabled = false; 
    Produit prod = new Produit(); 

    prod.ProduitQuantite = qtn; 

    db.Produits.Attach(prod); 
    db.Entry(prod).Property(p => p.ProduitQuantite).IsModified = true; 
    db.SaveChanges(); 

    Vondu v = new Vondu(); 
    v.ProduitId = idproduit; 
    v.CentreId = idcentre; 
    v.VonduDate = DateTime.Now; 

    db.Vondus.Add(v); 
    db.SaveChanges(); 
} 

我想更新产品的数量,我正在使用此方法,但它不工作并生成异常。如何在实体框架中更新?

+3

哪一行是抛出异常?什么是例外? – mxmissile

+0

您正在要求更新,但在您的代码中您正尝试添加新实体。 – vamsi

+0

System.Data.Entity.Infrastructure.DbUpdateConcurrencyException'发生在EntityFramework.dll中,但未在用户代码中处理 – Mohamed

回答

2

通过DbContext跟踪实体的变化。没有必要启动一个新产品。

public void VendreProduit(int idproduit, int idcentre) 
{ 
    var produit = db.Produits.FirstOrDefault(p => p.ProduitId == idproduit); 

    produit.ProduitQuantite -= 1; 
    db.SaveChanges(); 
} 
+0

这是要更新的代码? – Mohamed