我正在使用Northwind示例数据库的Entity Framework。
我有这个对象:
Product p = new Product { ProductName = "New awesome Product" };
Category c = new Category { CategoryName = "Cool Category" };
p.Category = c;
pdm.Insert(p);
pdm是一个处理CRUD操作的类。 pdm类使用此工作代码:
using (var ctx = new NorthwindEntities())
{
ctx.Products.Add(p);
ctx.SaveChanges();
}
但是,如果我想将类别更新为全新的类别,我试试这个:
p.Category = new Category { CategoryName = "Even Cooler Category" };
p.ProductName = "Now even more awesome";
pdm.Update(p);
在pdm类中调用此代码:
using (var ctx = new NorthwindEntities())
{
Product p = ctx.Products.Find(updatedProduct.ProductID);
ctx.Entry(p).CurrentValues.SetValues(updatedProduct);
ctx.SaveChanges();
}
我的问题:我的产品名称在数据库中已更改,类别保持不变。为什么我的数据库中的类别没有变化?我的产品行的类别ID保持不变,也不是我的数据库中的新类别。出了什么问题?
答案 0 :(得分:1)
类别是产品实体的子级。 SetValues仅设置简单类型,不会设置相关对象。您必须自己手动设置类别,或使用像Automapper这样的库为您执行此操作。