我正在创建一个基本的 ASP.NET Core Web API,其中包含国家/地区/感兴趣的地方的列表。
我已经创建了所有位置方法,它们是国家对象的子对象,并且一切都按预期工作。
但是,我正在尝试创建一种方法来添加兴趣点(位置对象的子对象),但它只是不会将任何内容保存到数据库中,即使代码的布局与我的做法相同位置。
这是我的控制器:
var finalPlaceOfInterest = mapper.Map<PlaceOfInterest>(placeOfInterestForCreation);
await repository.AddPlaceOfInterestAsync(locationId, finalPlaceOfInterest);
await repository.SaveChangesAsync();
存储库代码
public async Task AddPlaceOfInterestAsync(int locationId, PlaceOfInterest placeOfInterest)
{
var location = await GetLocationAsync(locationId);
if (location != null)
{
location.PlacesOfInterest.Add(placeOfInterest);
}
}
public async Task<bool> SaveChangesAsync()
{
return (await context.SaveChangesAsync() >= 0);
}
我的
PlaceOfInterest
实体类定义如下:
public class PlaceOfInterest
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
[ForeignKey("LocationId")]
public Location? Location { get; set; }
public int LocationId { get; set; }
}
调用
repository.SaveChangesAsync
后,finalPlaceOfInterest
对象应该填充其 ID 以及 Location
和 LocationID
属性,但它们没有被设置,也没有任何内容被保存到数据库中。
我有相同的代码来创建
Location
,但以 Country
作为其父级,并且它可以正常工作并保存。调用 SaveChangesAsync
方法后,将填充 ID
、Country
和 CountryID
属性。
我错过了什么?我开始有点生气,因为我不明白为什么这行不通。我已经添加了迁移并更新了我的数据库,所有表和列都是正确的。
伙计们,我解决了这个问题,当然是我太蠢了!在我的位置实体上,我声明了如下所示的名胜古迹属性:
public ICollection<PlaceOfInterest> PlacesOfInterest = new List<PlaceOfInterest>();
我忘了加上
{get; set;}
。谢谢各位的回复。