C#中的程序集聚合

时间:2010-12-23 18:35:15

标签: c# persistence

我有一个包含4个库项目的.NET解决方案,产生了4个程序集。

这些程序集中有一些类可以在线性工作流中生成一些部分信息。 通过信息=生成我的意思是一些业务逻辑信息,包括时间戳,记录数等。 必须插入此信息的最终表包含16列...这些程序集中的每一个都只有4列的可记录信息。 我的目标是聚合所有这些信息并在一次数据库调用中将其记录到数据库中......而不是4次。

更清楚的是,命名空间A中的一个类(命名空间/程序集A导入/使用B和C)...分别在B和C中实例化一个类。

我无法访问namespaceA中类中B和C类内部方法中生成的信息。但我希望聚合所有信息并将其推送到数据库中。

我该如何处理这个问题? 我希望将数据保存在所有这些不同的程序集中,并在一次调用中将数据记录到数据库中。如何持久保存数据?

3 个答案:

答案 0 :(得分:1)

如果要同时插入A,B和C类生成的数据,那么某些需要能够在插入点访问所有这些数据。

如果你说B和C不可用于A,你是否考虑过一个单独的类(例如它自己的程序集中)只关注持久性?

这样的类可以引用A,B和C,从每个中提取数据(假设它们暴露了它们的数据,不管怎样......如果没有,我不知道你是如何完成你所寻求的),聚合该数据并插入它。

这样,A,B和C对彼此以及持久保存数据的类一无所知。

答案 1 :(得分:1)

如果我明白你在问什么,那就没有意义了。

如果您有单独的类生成应该记录的数据,那么这些单独的类应该记录数据。没有其他班级应该知道各个班级感兴趣的数据。

让您的日志记录框架处理将日志记录信息捆绑到适当数量的数据库调用中。这是日志框架的实现细节。

答案 2 :(得分:0)

就我能解释这个问题而言,我怀疑你可能会从一个聚合器类(Collecting Parameter甚至更复杂的Visitor)中受益,它会访问每个信息生成类,编译数据,以及然后最终可以要求在其他地方发布已编译的数据。