我一直在閱讀和語境不更新
我已經達到了部分書「臨ASP.Net MVC3框架第三版」弗里曼A.和桑德森S.以下,他們告訴我如何更新實體。一切工作正常,除了更新。
我有一個頁面來編輯商店中的物品。很基本。當我改變頁面中的值,並提交它們時,它們以他們應該使用新值的方式實現我的存儲庫。
現在,這本書說明了我,我的倉庫(SaveProduct)下面的方法:
namespace SportsStore.Domain.Concrete
{
public class EFProductRepository : IProductRepository
{
private EFDbContext context = new EFDbContext();
public IQueryable<Product> Products
{
get { return context.Products; }
}
public void SaveProduct(Product product)
{
if (product.ProductID == 0)
{
context.Products.Add(product);
}
context.SaveChanges();
}
}
}
這種方法的工作原理,但它不保存我的產品。我不完全處於MVC3的模糊性之上,所以我被卡住了。該產品作爲SaveProduct方法中的參數到達,具有正確的值,應該保存,但上下文不會更新。
這是在MVC3更新的東西嗎? (這本書有點過時了嗎?)因爲我可以用if來編寫代碼來單獨檢查所有的值,但我不禁感到這會取消MVC3/Entity Framework的功能。
任何人都可以幫我嗎?非常感謝! :)在此期間,我會調試並尋找任何線索!
編輯:
當我趕上的SaveChanges()返回時,它似乎是零的整數。所以我猜想具有新值的實體不會更新到實體框架。
編輯2:
我已經找到了問題(已經)。似乎我太快地提出問題,對此我表示歉意。下面是我做的:
我下面的代碼添加到方法SaveProduct:
public void SaveProduct(Product product)
{
if (product.ProductID == 0)
{
context.Products.Add(product);
}
else
{
var productInDb = context.Products.FirstOrDefault(x => x.ProductID == product.ProductID);
context.Entry(productInDb).CurrentValues.SetValues(product);
}
context.SaveChanges();
}
我想這是這樣做的一個適當的方式?對不起,沒用的問題:)
我認爲context.Products.Add(產品); 應該是context.Products.AddObject(product); – 2012-07-23 00:59:38