将记录插入到与Entity Framework和MVC具有主/明细关系的表中

时间:2017-08-16 00:52:57

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

我在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; }
}

我将非常感谢你给我的任何建议。

1 个答案:

答案 0 :(得分:1)

CreateBudget方法中,更改结束。类似的东西:

context.BudgetDetails.Add(detailBudget);
}
_context.SaveChanges();
return detailBudget.Id;

它为您提供了EF中创建的detailBudget id。