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

时间:2014-04-03 08:53:04

标签: c# nhibernate semantics semantic-markup

我有一堆实体反映了我的应用程序中的数据流。相同的数据是这样的: 1.流畅的nHibernate映射 2.数据库访问对象 3.实体(类似“服务器端的干净数据”) 4. DTO对象,即实体加上可能还有一些其他字段,用于客户端 - 服务器交互。

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

我使用C#。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

另一种处理事物的方法是关注单个功能需要使用的数据,而不是为每个"表"创建一整套类。在数据库中。这样,您可以编写LINQ查询,直接从数据直接进入您实际使用的类型。

在理论上向应用程序添加层通常看起来很不错,但实际上我发现在添加大量编码开销的同时,它经常无法提供很多抽象。