簡體   English   中英

使用Entity Framework和MVC將記錄插入具有主/從關系的表中

[英]Insert records into tables with master/detail relationship with Entity Framework and MVC

我在API控制器中有一個HttpPost方法,它將復雜對象作為參數。 此復雜對象的對象類型為“預算”類(即數據庫中的主表),並且具有“預算細節”類的列表(即主類的詳細信息)。

我需要在主表中插入“預算”類的對象,然后在詳細信息表中插入“預算細節”類的列表

這是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”表時,主表的BudgetId的值為null。 如何插入主表(預算)並獲取該表的ID(預算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類(Detail表):

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

對於您給我的任何建議,我將不勝感激。

CreateBudget方法中,更改結尾。 就像是:

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

它為您提供了從EF創建的detailBudget ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM