私はHttpPostメソッドをパラメータとして複雑なオブジェクトをパラメータとして取るAPIコントローラに持っています。この複合オブジェクトは、クラス 'Budget'(データベース内のマスターテーブル)のタイプのオブジェクトを持ち、 'BudgetDetail'クラスのリスト(マスタークラスの詳細)を持っています。Entity Frameworkと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であるということです。 マスターテーブル(Budget)に挿入して、そのテーブルのID(BudgetId)を取得して詳細テーブル(BudgetDetails)に挿入する方法
この
は、パラメータであるクラスです: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'は更新された値を含みます –