【发布时间】:2010-11-16 14:52:05
【问题描述】:
我对亚音速还是比较陌生,发现最简单的东西有点棘手。 我有一个简单的查询,它连接了两个表,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>
但是我得到了一个错误,类似于
订阅不是 简介
我尝试更新我的查询,使其在选择中包含列名,但我也遇到了上述错误。
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;
在我的网格中,我现在可以将配置文件表中的 和订阅中的 绑定到我的网格
还有其他建议吗? 尽管上述方法有效,但我不喜欢在选择中使用“Subscription.”、“Profile.”,但我宁愿使用一些强类型值以防万一发生变化,所以我得到编译错误,而不是在尝试运行查询时崩溃!
谢谢
贝克斯
【问题讨论】:
标签: subsonic