abp - 为 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 行时。提前致谢。
解决方案
您的 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 中使用具有项目依赖项的实体。
推荐阅读
- python - 从现有数据框中的行子集创建新的 pandas 数据框
- maven - 如何使用带有geb的testng并行运行执行测试类
- python - 是否可以从熊猫数据框中获取图表,包括带有特殊颜色的 Heatmap 缺失数据?
- php - Symfony 4 EasyAdmin - 在树枝模板中呈现关联数据类型
- php - 输入类型:文本 - 对于允许 http 链接但不允许 https 的 url 输入?
- git - 清理日志中的提交输出?
- ios - 错误 - AVPlayer 没有从远程 url 播放音频 - Swift
- scala - 即使在更改 Xss 属性之后,intellij 中的 java.lang.StackOverflowError
- excel - 如何在屏幕截图之前等待一点时间?
- python - How to inherit from multiprocessing.Pipe?