我是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.
}