Web ApI Entity Framework(代码优先)值未出现在数据库中

Web ApI Entity Framework (Code First) Value not appearing in database

我的数据库 运行 正确,我可以通过 SQL 服务器手动输入数据,但是,当我尝试通过我的 API 传递值时(测试使用邮递员),该值不会传递到数据库中,它显示为 "NULL".

我有一个报告和一个预订表。

这是报告的代码:

public class Report
{

    public Report()
    {
        Injuries = new List<Injury>();
        this.Bookings = new HashSet<Booking>();
    }
    public int Id { get; set; }
    public string Club1 { get; set; }
    public string Club2 { get; set; }
    public virtual ICollection<Injury> Injuries { get; set; }
    public virtual ICollection<Booking> Bookings { get; set; }
    }

预订:

public class Booking
{
    //public Booking()
    //{
    //    Reports = new List<Report>();
    //}

    public int Id { get; set; }
    public string Club { get; set; }
    public string PlayerName { get; set; }
    public string PlayerNumber { get; set; }
    public string Reason { get; set; }
    public string Description { get; set; }

    //public int? Report_Id { get; set; }
    public Nullable<int> Report_Id { get; set; }

    public virtual Report Report { get; set; }

    //public virtual ICollection<Report> Reports { get; set; }
}

控制器:

     //POST: api/Reports
     [ResponseType(typeof(Report))]
     public async Task<IHttpActionResult> PostReport(Report report)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.Reports.Add(report);
        await db.SaveChangesAsync();

        return CreatedAtRoute("DefaultApi", new { id = report.Id }, report);
    }

我把测试信息通过Postman:

我不确定为什么显示 Report_Id,因为它不是必需的,但是,Report_Id1 是将报告和预订连接在一起的字段。

由于您的外键不符合约定 (ReportId),您需要使用注释 [ForeignKey] 或流畅的 api 配置:

modelBuilder.Entity<Booking>()
            .HasRequired(b => b.Report) 
            .WithMany(b => b.Bookings) 
            .HasForeignKey(p => p.Report_Id);

这就是 EF 添加第二个 Report_ID1 的原因。 https://msdn.microsoft.com/en-us/data/hh134698.aspx