我有两个实体:Invoice和InvoiceDetail。实体框架:更新相关实体
发票有一个InvoiceDetails成员。
当我创建一个obcjet时,它按预期工作。
框架在数据库中插入Invoice和InvoiceDetail行。
$.ajax({
url: "/Invoices/Index",
data: JSON.stringify({
InvoiceDetails: [{
Description: "1"
}, {
Description: "2"
}]
}),
contentType: "application/json",
type: "POST"
});
[ActionName("Index")]
[HttpPost]
public JsonResult Post(Invoice invoice)
{
db.Invoices.AddObject(invoice);
db.SaveChanges();
...
我还想更新Invoice和相关的InvoiceDetails。
$.ajax({
url: "/Invoices/Index/1",
data: JSON.stringify({
Id: 1,
InvoiceDetails: [{
Id: 1,
Description: "1*"
}, {
Id: 2,
Description: "2*"
}]
}),
contentType: "application/json",
type: "PUT"
});
[ActionName("Index")]
[HttpPut]
public JsonResult Put(Invoice invoice)
{
db.Invoices.Attach(invoice);
db.ObjectStateManager.ChangeObjectState(invoice, EntityState.Modified);
db.SaveChanges();
...
但框架只更新发票。
如何更新相关实体?
我的模型看起来像这样
编辑:解 http://michele.berto.li/update-of-an-object-and-related-records-with-backbonejs-and-net-mvc
更新的链接 http://michele.berto.li/update-of-an-object-and-related-records-with-backbone-js-and-net-mvc/
我有一个控制器'HttpPost'操作,用于处理提交复杂表单的操作,该表单由一个实体及其导航属性组成,这些属性可以是由于删除,某些新项目,某些修改而丢失的某些项目的集合,以及与单个对象导航相同。可以为零的属性(FK属性可以为空),修改为新实体,修改现有或许多其他选项。有关如何管理EF中相关实体的统一方法?由于缺乏明确统一的方式来执行此类操作,整个事情开始变得混乱。 – Shimmy 2015-04-19 04:23:20
关于2015年这个问题的任何消息?任何方式轻松更新整个图形,包括删除相关实体? – Shimmy 2015-04-19 22:18:42