无法更新数据库中对象的属性

时间:2015-09-23 10:15:25

标签: c# entity-framework

我正在使用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保持不变,也不是我的数据库中的新类别。出了什么问题?

1 个答案:

答案 0 :(得分:1)

类别是产品实体的子级。 SetValues仅设置简单类型,不会设置相关对象。您必须自己手动设置类别,或使用像Automapper这样的库为您执行此操作。