外键引用对象返回null

时间:2017-09-24 14:21:29

标签: c# asp.net-core entity-framework-core aspnetboilerplate navigation-properties

我在具有以下属性定义的实体中引用AbpUser表:

[ForeignKey("LocationManagerId")]
public virtual User LocationManager { get; set; }
public virtual long LocationManagerId { get; protected set; }

我的DTO如下:

[AutoMapFrom(typeof(Location))]
public class LocationDto : FullAuditedEntityDto<Guid>
{
    // <snip>
    public virtual User LocationManager { get; set; }
}

使用AsyncCrudAppService并从MVC控制器调用以下内容:

var locations = (await _locationAppService.GetAll(new PagedAndSortedResultRequestDto())).Items;

locations.LocationManager正在返回null。我已经确认实体和DTO中的所有内容都设置为virtual。我不知所措。有人有任何见解吗?

1 个答案:

答案 0 :(得分:4)

如果您使用的是EntityFrameworkCore,则必须使用eager-loading。

LocationAppService中重写此方法:

protected override IQueryable<Location> CreateFilteredQuery(LocationGetAllInput input)
{
    return Repository.GetAllIncluding(x => x.LocationManager);
}