我已经配置了这两个实体:
Host.cs
public class Host : FullAuditedEntity<int>
{
[Required]
public string Name { get; set; }
public List<HostLine> HostLines { get; set; }
}
HostLine.cs
public class HostLine: FullAuditedEntity<int>
{
[Required]
public string Name { get; set; }
public Host Host { get; set; }
}
手动,我在数据库中插入了Host
和HostLine
的一个元组,并相应地链接它们。
select Id, Name from [MyDB].dbo.Hosts;
Id | Name
-----------
1 | Host1
select Name, HostId from [MyDB].dbo.HostLines;
HostId | Name
------------------
1 | HostLine1
HostLine
对Host
表的FK已配置,如下面的屏幕截图所示。
然后,我实现了一个扩展AsyncCrudAppService
的简单服务,以便在Host
和HostLine
实体上提供CRUD操作。
public class HostsAppService : AsyncCrudAppService<Host, HostDto, int, PagedResultRequestDto, CreateHostDto, HostDto>, IHostsAppService
{
public HostsAppService(IRepository<Host> repository)
: base(repository)
{
}
protected override HostDto MapToEntityDto(Host entity)
{
return base.MapToEntityDto(entity);
}
}
我将覆盖添加到方法MapToEntityDto
,以便查看从数据库中读取的数据(它将被删除)。
当我通过Angular客户端调用服务的Get REST方法时,我可以使用MapToEntityDto()
方法,但Host
实体没有HostLines
List
的值领域。
所以Host
存储库似乎没有从HostLine
表中读取链接数据。
我是否缺少某种配置让Host
存储库也读取HostLine
数据?
谢谢
答案 0 :(得分:1)
您需要使用以下代码手动包含HostLines。
public class TaskAppService : AsyncCrudAppService<Host, HostDto, int, PagedResultRequestDto, CreateHostDto, HostDto>, IHostsAppService
{
//...
protected override IQueryable<Task> CreateFilteredQuery(GetAllTasksInput input)
{
return base.CreateFilteredQuery(input).Include(x=>x.HostLines);
}
//...
}
更多信息请参阅https://aspnetboilerplate.com/Pages/Documents/Application-Services#crud-permissions