{
public class EFProductRepository : IProductsRepository
{
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);
}
else
{
Product prod = context.Products.First(x => x.ProductID == product.ProductID);
prod.Description = product.Description;
prod.Category = product.Category;
prod.Name = product.Name;
prod.Price = product.Price;
}
context.SaveChanges();
}
public void DeleteProduct(Product product) {
context.Products.Remove(product);
context.SaveChanges();
}
}
}
私はASP.NETにかなり慣れていないので、チュートリアルを行っているときに、コンテキストへの保存がどのように機能するかを理解するのに苦労しています。特に、この部分を意味します。
else
{
Product prod = context.Products.First(x => x.ProductID == product.ProductID);
prod.Description = product.Description;
prod.Category = product.Category;
prod.Name = product.Name;
prod.Price = product.Price;
}
context.SaveChanges();
OOPについて学んだことから、ローカルで作成されたオブジェクトは、それが作成された範囲内にのみ存在します。「Product product」から変更された値を含む「Productprod」は、どのようにして「context」に関連付けられ、正常に保存されますか。変更?
また、「context.SaveChanges()」呼び出しは「Product」タイプのパラメーターを送信しないため、どのように機能しますか?