【发布时间】:2011-03-29 04:41:29
【问题描述】:
我正在查看 Steven Sanderson 的书 Pro ASP.NET MVC 2 Framework 中产品存储库中的保存方法示例:
public void SaveProduct(Product product)
{
// if new product, attach to DataContext:
if (product.ProductID == 0)
productsTable.InsertOnSubmit(product);
else if (productsTable.GetOriginalEntityState(product) == null)
{
// we're updating existing product
productsTable.Attach(product);
productsTable.Context.Refresh(RefreshMode.KeepCurrentValues, product);
}
productsTable.Context.SubmitChanges();
}
我不明白else if这一行的逻辑:
else if (productsTable.GetOriginalEntityState(product) == null)
据我了解,GetOriginalEntityState() 返回指定实体的原始状态。在这种情况下,该实体是product。
所以这个 else if 语句对我来说是这样的:“如果原件不存在,那么……” 但这没有意义,因为这本书说这会检查我们正在修改已经存在的记录。
在这种情况下我应该如何理解GetOriginalEntityState?
编辑
顺便说一句,这段摘录来自第 6 章,第 191 页……以防万一有人拿着这本书想查一下。本书只是在代码示例中包含该函数,但从未解释该函数的作用。
【问题讨论】:
标签: asp.net-mvc linq-to-sql asp.net-mvc-2