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

对于您给我的任何建议,我将不胜感激。

#1楼 票数:1

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

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

它为您提供了从EF创建的detailBudget ID。

  ask by Juan José translate from so

未解决问题?本站智能推荐:

1回复

实体框架无法在对象中插入重复键

找不到解决我问题的方法。 很抱歉,如果我重复该问题。 我在实体框架代码中有一对多的关系: 在PricingPlan表中,我有2行Free和Pro 用户注册时,我想将他添加到免费计划中: 我正在从Db获取现有计划,并将其添加到userProfile属性,但是当User
1回复

所有Entity Framework方法都应该使用异步吗? [关闭]

在Asp.Net MVC或Asp.Net Web API中,使用查询数据库(即使是最简单的查询)的每个控制器操作都使用async / await模式是一种好习惯吗? 我知道使用async / await会增加复杂性,但是添加它值得吗? 即使是最简单的查询?
1回复

在断开连接的环境中与实体框架插入/更新多对多关系

我有一个Web应用程序,它调用一个webApi,我的webApi调用我的服务,而我的服务调用我的DbContext。 我有2个实体,内容和文件。 这些是单独的实体,并存储在单独的表中。 现在,我还有一个针对内容的集合,称为文件。 这用于将文件引用到内容实体。 实体框架因此创
1回复

在多层MVC应用程序中启用迁移

我正在使用MVC 5(剃刀视图),实体框架6(代码优先),ASP.Net Identity 2.0和Web API创建一个新的应用程序。 试图创建一个体面的去耦架构,我想在我的数据层中启用迁移,但是我对迁移的工作方式有一个误解。 这是我的基本解决方案架构: 如上所示,数据包项目I通过
1回复

内部服务器错误500 Asp.net WebApi尝试与实体进行DI

我正在构建一个ASP.net WebApi,并尝试与Entity一起使用。 我正在遵循本指南。 ASP.NET Web API 2(C#)入门 我正在使用Fiddler收到500个内部服务器错误。 JSON异常消息指出ExceptionMessage=An error occur
1回复

当我使用基于代码的配置从ASP MVC项目运行代码时,为什么EF 6.1中的连接字符串会更改?

我有一个包含EF相关代码的dll:实体,上下文和基于代码的配置。 当我对此dll运行测试时,一切正常。 我创建了一个ASP MVC Web Api项目,当我从中调用dll时,出现以下异常: “无法将文件'C:\\ project \\ xxx \\ MyProj.Persistan
2回复

实体框架:在具有许多记录的表中插入记录时提高性能

我想在一个有 60 列(其中一些不是必需的)和 200 万条记录的表中插入一条记录。 大约需要 20 秒。 var package = new Package() { DestinationCityId = city.Id, OriginCityI
1回复

在实体框架中合并2个实体图

EF是否支持这样的事情? 假设我有3个实体 Orders是Customer的子项,而OrderLines是Order的子项 使用EF加载此结构后,我将其返回到Web API客户端(已断开连接)。 当客户端返回图形(将POST返回到服务器)时,我只知道一个事实:这是同一位Cu