0
我有一个HttpPost方法进入一个API控制器,它将一个复杂对象作为参数。这个复杂的对象具有类'预算'(即数据库中的主表)类型的对象,并且它具有'BudgetDetail'列表(这是主类的详细信息)。将记录插入到具有与实体框架和MVC的主/明细关系的表中
我需要插入的“预算”在主表类的对象,然后插入详细信息表中
这是API控制器的HttpPost方法“BudgetDetail”类的列表:
[HttpPost]
public IHttpActionResult CreateBudget(NewBudget newBudget)
{
var budget = new Budget
{
DateOfIssue = newBudget.Budget.DateOfIssue,
VehicleId = newBudget.Budget.VehicleId,
BudgetAccepted = newBudget.Budget.BudgetAccepted
};
_context.Budgets.Add(budget);
foreach (var detail in newBudget.BudgetDetails)
{
var detailBudget = new BudgetDetail
{
//BudgetId = Here i need to get id of the Budget table that i inserted before
ProductId = detail.ProductId,
Price = detail.Price,
Quantity = detail.Quantity,
Iva = detail.Iva,
Total = detail.Total
};
_context.BudgetDetails.Add(detailBudget);
}
_context.SaveChanges();
return Ok();
}
我在这里的问题是,当我尝试插入'BudgetDetails'表中主表的BudgetId的值为null。 我如何插入主表(预算),并获得该表(BudgetId)插入细节表(BudgetDetails)的ID。
这是对参数的类:
public class NewBudget
{
public Budget Budget{ get; set; }
public List<BudgetDetail> BudgetDetails{ get; set; }
}
这是我的预算级(主表):
public class Budget
{
public int Id { get; set; }
public DateTime DateOfIssue { get; set; }
public int VehicleId { get; set; }
public bool BudgetAccepted { get; set; }
}
这是我BudgetDetail类(详细信息表):
public class BudgetDetail
{
public int Id { get; set; }
public int BudgetId { get; set; }
public int ProductId { get; set; }
public byte Quantity { get; set; }
public int Price { get; set; }
public int Iva { get; set; }
public int Total { get; set; }
}
我会非常感谢您给我的任何建议。
如果你在'context.Budgets.Add(budget)'之后调用'.SaveChanges()',那么'budget.Id'将包含更新值 –