在实体框架TPH中更新子属性

时间:2015-09-15 16:50:05

标签: c# asp.net-mvc entity-framework

我是C#/ MVC中使用EF继承的新手,我正在尝试更新子类的导航属性,但无法弄清楚如何执行此操作。显然,子类继承自父类,并且它指定了自己的EF映射。我必须使用父类型更新数据库,否则不会将任何内容推送到数据库(但不会抛出错误)。但是,使用父类不会公开子属性,因此我无法更新它们甚至推送到数据库。

在EF中处理特定于子类的属性的正确方法是什么?

这是一个普遍的问题,而不是我的问题,但这里的代码不起作用。

// get the existing task using the model posted from view,
// convert it to child class (GetTaskById returns parent class)
PETask task = _projectService.GetTaskById(model.Id).ConvertToET();
var proj = _projectService.GetById(model.ProjectId);

// error checking

if (ModelState.IsValid)
{
    // use AutoMapper to convert the posted data to entity, passing task as
    // a parameter to preserve proxies
    task = model.ToEntity(task);

    if (model.SOId.HasValue)
    {
        SalesOrder so = _salesOrderService.GetByOrderId(model.SOId.Value);
        task.SalesOrderId = so.Id;
        task.SalesOrder = so;
    }

    _projectService.Update(task);
    // all information is correct, including a proxy for the SalesOrder property
    // and the actual SalesOrderId, but the DB is not updated. no error is thrown.
}

0 个答案:

没有答案