ASP.NET Core Web API:实体未保存到数据库

问题描述 投票:0回答:1

我正在创建一个基本的 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
属性。

我错过了什么?我开始有点生气,因为我不明白为什么这行不通。我已经添加了迁移并更新了我的数据库,所有表和列都是正确的。

entity-framework asp.net-core-webapi
1个回答
0
投票

伙计们,我解决了这个问题,当然是我太蠢了!在我的位置实体上,我声明了如下所示的名胜古迹属性:

public ICollection<PlaceOfInterest> PlacesOfInterest = new List<PlaceOfInterest>();

我忘了加上

{get; set;}
。谢谢各位的回复。

© www.soinside.com 2019 - 2024. All rights reserved.