首页 > 解决方案 > 为 abp-dynamic-form 中的下拉列表扩展实体和配置外键的推荐方法

问题描述

我正在尝试学习 abp 模块开发。我有一个问题,我几天都无法解决。是否有一种聪明的方法来填充外键值以填充 abp 模块模板中 abp-dynamic-form 的下拉列表。

我无法理解的一点是,在 abp 模块模板中,dtos 位于 .contracts 项目中。但是contracts项目不依赖.domain项目。Contracts 项目仅对 .domain.shared 项目具有依赖关系。并且 domain.shared 没有项目依赖。所以,例如我有 CityDto 作为:

public class CityDto : EntityDto<Guid>
{
    public string Name { get; set; }

    public Guid CountryId { get; set; }

    public Country Country { get; set; }
}

public class Country: : AggregateRoot<Guid>
{
    public string Name { get; set; }
}

CityDto 应包括国家信息。但是.contracts 项目的国家是未知的。因为 Country 是在 .domain 项目中定义的。请有人给出一个代码示例,说明如何实现这一点。我想构建一个允许在下拉列表中选择国家/地区值的 abp-dynamic-form,例如在 db 中创建 City 行时。提前致谢。

标签: abp

解决方案


您的 dto 包含实体。dto 的要点之一是暴露实体的选择性属性而不是整个实体。

因此,您CityDto应该包含CountryDto您决定在Country实体而不是实体本身中公开的属性。

public class CityDto : EntityDto<Guid>
{
    public string Name { get; set; }

    public Guid CountryId { get; set; }

    public Country Country { get; set; } //This should also be CountryDto
}

Abp 分层架构阻止您在 dtos 中使用具有项目依赖项的实体。


推荐阅读