为 abp-dynamic-form 中的下拉列表扩展实体和配置外键的推荐方法
Posted
技术标签:
【中文标题】为 abp-dynamic-form 中的下拉列表扩展实体和配置外键的推荐方法【英文标题】:Recommended way to extend entities and configure foreign keys for dropdowns in abp-dynamic-form 【发布时间】:2021-06-23 10:13:57 【问题描述】:我正在尝试学习 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 行时。提前致谢。
【问题讨论】:
【参考方案1】:您的 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 中使用具有项目依赖项的实体。
【讨论】:
以上是关于为 abp-dynamic-form 中的下拉列表扩展实体和配置外键的推荐方法的主要内容,如果未能解决你的问题,请参考以下文章