0

大约有 100 个父表,所有表都以 RECID 作为它们的标识列。没有两个父母包含相同的 RECID。有一个带有外键 RECID 的子表。

我尝试使用以下想法,其中 nebulous 根据用户需求在 100 个表域上变化:

var stuff = _d.Query<dynamic, sameAgain, dynamic>(
    new Relator().relatem,
    "select * from nebulous as n left join sameAgain on n.RECID = RECID"
    );
...
class dynamic Relator {
    relatem(dynamic parent, sameAgain child)
    {
       // inspired by the most recent blog Multi-POCO in PetaPoco

       ... (parent as IDictionary<string, object>)["RECID"] ...
    }
} 

没有骰子。我进入那里并感到困惑,因为调试器显示的对象不是父级的 ExpandoObjects。所以我尝试用 ExpandoObject 替换动态。

还是没有骰子。所以它仍然是一个有趣的死胡同。有没有人试过这个?

4

1 回答 1

0

默认情况下,PetaPoco 使用 PetaPoco.cs 文件顶部的“#define PETAPOCO_NO_DYNAMIC”禁用动态功能。如果您想使用动态功能,请注释掉该行并重新构建(这当然需要 .net 4.0)。如果启用了动态功能并且查询成功,则在调试时记录将显示为 ExpandoObject 而不是 Object。

于 2011-11-22T18:49:43.850 回答