从单一源生成“并行”数据对象代码的方法

本文关键字:对象 数据 代码 方法 并行 单一源 | 更新日期: 2023-09-27 17:56:26

我有一堆实体来反映应用程序中的数据流。相同的数据如下所示:1. 流畅的休眠映射2. 数据库访问对象3. 实体(类似于"服务器端的清理数据")4. DTO 对象,即实体加上一些附加字段,用于客户端-服务器交互。

这些都必须支持同一组字段,我还必须在DAO和实体以及DTO和实体之间设置自动映射器映射。如您所见,这是很多手动复制粘贴。是否有任何软件可以帮助从字段列表中自动生成许多类似的对象?

我使用 C#。

从单一源生成“并行”数据对象代码的方法

如果每个层之间确实存在一堆公共属性,则可以将它们放在一个公共分母基类型上,该基类型将由流中的每个对象扩展。

另一方面,如果每一层都略有不同,但可以预测,请考虑编写 LinqPad 脚本,以基于其中一个层为其他三层生成所需的代码。LinqPad 是此类工作的不错选择,因为您不必处理解析;在生成其他层时,只需使用反射来检查包含其中一个层的已编译程序集。

不过,最终,我建议尝试减少您正在处理的层数。例如,对于图层 (4),是否可以使用包含而不是复制粘贴简单地"添加"附加属性?例如:

public class CustomerDto { 
    public CustomeEntity Entity { get; set; } 
    public int SomeProp { get; set; }
}

我对 NHibernate 不太熟悉,但你真的需要 (1) 和 (2) 的不同类型吗?

另一种处理方法是专注于各个功能需要使用的数据,而不是为数据库中的每个"表"创建一整套类。这样,您就可以编写一个 LINQ 查询,以便直接从数据转到实际使用的类型。

从理论上讲,向应用程序添加层似乎不错,但在实践中,我发现它通常无法提供太多抽象,同时增加了大量的编码开销。