2017-08-16 51 views
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; } 
} 

我會非常感謝您給我的任何建議。

+0

如果你在'context.Budgets.Add(budget)'之後調用'.SaveChanges()',那麼'budget.Id'將包含更新值 –

回答

1

CreateBudget方法中,更改結束。例如:

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

它給你從EF創建的detailBudget id。