2016-09-26 100 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