Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在(小型)ORM中建模聚合结果集_C#_Orm - Fatal编程技术网

C# 在(小型)ORM中建模聚合结果集

C# 在(小型)ORM中建模聚合结果集,c#,orm,C#,Orm,我正在使用PetaPoco mini ORM,它在我的实现中运行存储过程,并将它们映射到我定义的对象模型。这非常直观地适用于提取单数表的查询,即从订单中选择*,但当我开始编写提取聚合结果的查询时,情况就不那么糟了。例如,假设我有一个Customers表和Orders表,其中Orders表包含对CustomerID的外键引用。我想检索所有订单的列表,但在我的应用程序视图中,显示客户名称以及所有其他订单字段,即 SELECT Customers.Name, Orders.* FROM

我正在使用PetaPoco mini ORM,它在我的实现中运行存储过程,并将它们映射到我定义的对象模型。这非常直观地适用于提取单数表的查询,即从订单中选择*,但当我开始编写提取聚合结果的查询时,情况就不那么糟了。例如,假设我有一个Customers表和Orders表,其中Orders表包含对CustomerID的外键引用。我想检索所有订单的列表,但在我的应用程序视图中,显示客户名称以及所有其他订单字段,即

SELECT
    Customers.Name,
    Orders.*
FROM
    Orders
    INNER JOIN Customers
        ON Orders.CustomerID = Customers.ID
由于之前没有使用过任何类型的ORM,我不确定处理此类数据的正确方法。我现在看到两种选择:

为特定操作创建新的聚合模型。我觉得这样做在任何大型应用程序中都会得到大量的模型,但它可以让我将查询结果直接映射到对象。 有两个单独的查询,一个用于检索订单,另一个用于检索客户,然后通过LINQ将其联接。这似乎是一个比1更好的选择,但同样显得迟钝,因为当我想要一个列时,我正在拉出30个列,尽管我的特定迷你ORM允许我只拉出一行并将其绑定到模型。
有没有我提到的两种方法中的一种,或者我没有想到的更好的方法来实现这一点?

选项1在基于CQR的体系结构中很常见。当您考虑它时,它是有意义的:尽管它需要一些努力,但它直观地映射到您正在做的事情,并且不会影响解决方案的其他部分。因此,如果您必须更改它,您可以在不破坏其他任何内容的情况下进行更改。

选项1在基于CQR的体系结构中很常见。当您考虑它时,它是有意义的:尽管它需要一些努力,但它直观地映射到您正在做的事情,并且不会影响解决方案的其他部分。因此,如果您必须更改它,您可以在不破坏其他任何内容的情况下进行更改。

我认为最终我可能会这样做。今天我尝试了选项2,在查询以检索多个对象集之后,我最终还是需要将它们组合成一些聚合…因此我最好使用SQL而不是C来执行逻辑,以节省来回的时间。谢谢我想最终我可能会这样做。今天我尝试了选项2,在查询以检索多个对象集之后,我最终还是需要将它们组合成一些聚合…因此我最好使用SQL而不是C来执行逻辑,以节省来回的时间。谢谢