我在API控制器中有一个HttpPost方法,它将参数作为复杂对象。这个复杂的对象有一个类型为' Budget' (这是数据库中的主表),它有一个' BudgetDetail'类的列表(这是主类的详细信息)。
我需要插入'预算'在主表中的类,然后插入' BudgetDetail'详细信息表中的类
这是API控制器的HttpPost方法:
[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'表master表的BudgetId的值为null。 如何在主表(预算)中插入并获取要在详细信息表(BudgetDetails)中插入的表(BudgetId)的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; }
}
我将非常感谢你给我的任何建议。
答案 0 :(得分:1)
在CreateBudget
方法中,更改结束。类似的东西:
context.BudgetDetails.Add(detailBudget);
}
_context.SaveChanges();
return detailBudget.Id;
它为您提供了EF中创建的detailBudget id。