从与 AsyncCrudAppService 的关系中获取数据
Get data from relationship with AsyncCrudAppService
我正在使用 asp.net 样板,我想 return 从 api 调用具有 属性 的 DTO,它必须从实体。
该服务很简单,继承自 AsyncCrudAppService:
public class ItemAppService : AsyncCrudAppService<Core.Item, ItemDto>, IItemAppService
{
...
}
在请求任何 Get 或 GetAll 方法时,我需要从类别(即关系,见下文)中获取描述,return是 ItemDTO。
public class ItemDto : EntityDto
{
public string Name { get; set; }
public int? CategoryId { get; set; }
public string CategoryDescription { get; set; }
}
为了澄清,我有以下两个实体有关系。
public class Item : Entity {
public string Name { get; set; }
public int? CategoryId { get; set; }
public virtual Category Category { get; set; }
}
public class Category : Entity {
public string Description { get; set; }
public virtual ICollection<Item> Items { get; set; }
}
在 EntityFrameworkCore 映射中产生以下关系:
...
public void Configure(EntityTypeBuilder<Item> builder)
{
builder.HasOne<Category>(e => e.Category).WithMany(c => c.Items).HasForeignKey(c => c.CategoryId);
}
自动映射器配置文件配置:
public class ItemProfile : Profile
{
public ItemProfile()
{
CreateMap<ItemDto, Core.Item>();
CreateMap<Core.Item, ItemDto>()
.ForMember(p => p.CategoryDescription, options => options.MapFrom(x => x.Category.Description));
}
}
目前,ItemDto 中的 CategoryDesciption returning 为 null,显然是因为它没有正确映射。我可以用 automapper 做些什么来获取描述吗?或者如何完成。
我正在使用 asp.net 样板,我想 return 从 api 调用具有 属性 的 DTO,它必须从实体。
该服务很简单,继承自 AsyncCrudAppService:
public class ItemAppService : AsyncCrudAppService<Core.Item, ItemDto>, IItemAppService
{
...
}
在请求任何 Get 或 GetAll 方法时,我需要从类别(即关系,见下文)中获取描述,return是 ItemDTO。
public class ItemDto : EntityDto
{
public string Name { get; set; }
public int? CategoryId { get; set; }
public string CategoryDescription { get; set; }
}
为了澄清,我有以下两个实体有关系。
public class Item : Entity {
public string Name { get; set; }
public int? CategoryId { get; set; }
public virtual Category Category { get; set; }
}
public class Category : Entity {
public string Description { get; set; }
public virtual ICollection<Item> Items { get; set; }
}
在 EntityFrameworkCore 映射中产生以下关系:
...
public void Configure(EntityTypeBuilder<Item> builder)
{
builder.HasOne<Category>(e => e.Category).WithMany(c => c.Items).HasForeignKey(c => c.CategoryId);
}
自动映射器配置文件配置:
public class ItemProfile : Profile
{
public ItemProfile()
{
CreateMap<ItemDto, Core.Item>();
CreateMap<Core.Item, ItemDto>()
.ForMember(p => p.CategoryDescription, options => options.MapFrom(x => x.Category.Description));
}
}
目前,ItemDto 中的 CategoryDesciption returning 为 null,显然是因为它没有正确映射。我可以用 automapper 做些什么来获取描述吗?或者如何完成。