因此,我为我的Web API创建了两个模型类。买家和公寓类。买家可以拥有多个公寓。因此,我的模型类如下:
public class Apartment
{
[Key]
public int ID { get; set; }
public string Title { get; set; }
public int NbofRooms { get; set; }
public int Price { get; set; }
public string Address { get; set; }
}
和
public class Buyer
{
[Key]
public int ID { get; set; }
public string FullName { get; set; }
public int Credit { get; set; }
public ICollection<Apartment> apartments { get; set; }
}
因此,该项目在数据库中创建了两个表,其中Apartments表包含BuyerID。因此,我不知道是否要在给定公寓ID和买主ID的情况下创建购买功能,如何更改数据库中的买主ID。 这是我在“买方控制器”中尝试的方法:
[HttpPut("{id}/{ApartmentID}")]
public async Task<IActionResult> PutBuyerApartment([FromRoute] int id, [FromRoute] int apartID, [FromBody] Buyer buyer)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != buyer.ID)
{
return BadRequest();
}
var Apartments = await _context.Apartments.SingleOrDefaultAsync(m => m.ID == apartID);
_context.Entry(Apartments).State = EntityState.Modified;
buyer.apartments.Add(Apartments);
_context.Entry(buyer).State = EntityState.Modified;
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!BuyerExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return NoContent();
}
我应该如何更改它以便它起作用或还有其他方法? 谢谢
答案 0 :(得分:0)
更好的方法是告诉EF他们在您的模型公寓中的直接关系
public class Apartment
{
[Key]
public int ID { get; set; }
public string Title { get; set; }
public int NbofRooms { get; set; }
public int Price { get; set; }
public string Address { get; set; }
public int BuyerId { get; set; } //Make it nullable if an aparment may not have a buyer at some point
public Buyer Buyer { get; set; }
}
此约定与数据库中的影响相同,但是通过更改“公寓购买者ID”,它将反映在您的购买者公寓列表中,并增加了可以直接通过公寓访问买方信息的好处。