Subsonic 亚音速2.2将联接的表格列绑定到网格

Subsonic 亚音速2.2将联接的表格列绑定到网格,subsonic,Subsonic,我对亚音速还是相当陌生,发现最简单的东西有点棘手。 我有一个简单的查询,它连接了两个表:Profile和Subscription ProfileCollection profiles = new Select().From<Profile>() .InnerJoin(Subscription.ProfileIdColumn,Profile.ProfileIDColumn ) .Where(Su

我对亚音速还是相当陌生,发现最简单的东西有点棘手。 我有一个简单的查询,它连接了两个表:Profile和Subscription

  ProfileCollection profiles =
            new Select().From<Profile>()
                .InnerJoin(Subscription.ProfileIdColumn,Profile.ProfileIDColumn )
                .Where(Subscription.ExpiryDateColumn).IsLessThan(Date)
                .ExecuteAsCollection <ProfileCollection > ();
        return profiles;
我想在我的表格中显示以下列:Profile.Name和Subscription.ExpiryDate,以及其他一些列

之前我使用过LLBLGen,我可以做一些类似的事情,请注意,这是伪代码:

<repeater>    
<itemitemplate>

<%#Eval("Name")%>
<%#Eval("Subscription.ExpiryDate")%>  
</itemitemplate>   

</repeater>
但我发现了一个错误

订阅不是的成员 侧面图

我尝试更新我的查询,使其在select中具有列名,但我也遇到了上述错误

     ProfileCollection profiles =
                new Select(Subscription.ExpiryDateColumn.PropertyName,
Profile.NameColumn.PropertyName).From<Profile>()
                    .InnerJoin(Subscription.ProfileIdColumn,Profile.ProfileIDColumn )
                    .Where(Subscription.ExpiryDateColumn).IsLessThan(Date)
                    .ExecuteAsCollection <ProfileCollection > ();
            return profiles;
这似乎是非常常见的事情,我发现有很多地方需要绑定到网格并从连接表中调用列,但这似乎是不可能的

有人能告诉我遗漏了什么,或者让我知道用亚音速将联接表行绑定到网格的最佳方法吗

我的解决方案 好的,根据下面的答案,我已经确定我需要做以下工作: 我用了*所以我可以把所有的行都带回来

 Dataset profiles =
                new Select("Subscription.*","Profile.*").From<Profile>()
                    .InnerJoin(Subscription.ProfileIdColumn,Profile.ProfileIDColumn )
                    .Where(Subscription.ExpiryDateColumn).IsLessThan(Date)
                    .ExcecuteDataset();
            return profiles;
在我的网格中,我现在可以从profile表进行绑定,您需要查看执行连接的示例,附加的链接有很多示例,应该会有所帮助。如果必须使用亚音速进行复杂连接,我建议将逻辑移到存储过程中。下面,将创建一个查询,返回在Select方法中列出的列

例如:

SqlQuery q = new Select(Subscription.ExpiryDateColumn.PropertyName, Profile.NameColumn.PropertyName).From<Profile>()
                    .InnerJoin(Subscription.ProfileIdColumn,Profile.ProfileIDColumn )
                    .Where(Subscription.ExpiryDateColumn).IsLessThan(Date);

DataTable dt = q.ExecuteDataSet().Tables[0];

我正在使用上面的亚音速查询工具,不是吗?但在这种情况下,我仍然返回一个类型概要文件集合,因此我仍然无法解决如何将它们绑定到网格,因为我得到了与上面相同的错误!它应该返回其他东西吗?如果可以的话,我宁愿避开SPs,但到目前为止,我在进行实际连接时没有遇到问题,只是将连接表的结果绑定到网格。你能举例说明我是如何做到这一点的吗?你可以将亚音速查询结果绑定为数据表、读取器或集合。如果您想要强类型集合,请使用collections Load方法并传入查询,请参见上面的示例。您上面的示例是否允许我在绑定到网格时访问?否,它将只提供ProfileCollection中可用的属性。集合是强类型的,不能向其添加新属性。如果要混合和匹配列,需要使用SqlQuery并通过将列添加到Select.,,来选择列。,。函数调用。这是我最初的问题。。!我已尝试将table.column添加到select,但由于它将带回一个配置文件集合,因此它只能看到配置文件列!我想我需要返回一个数据集?