.net 亚音速。使用Group By的列名称不明确

.net 亚音速。使用Group By的列名称不明确,.net,subsonic,.net,Subsonic,我将亚音速2.2与.NET2.0一起使用,当我包含“分组依据”时,出现了一个错误 最初我有这个代码,它工作得很好: SqlQuery etResourceTitle = new Select(ResTitleOngoing.Columns.ResourceTitleID, ResTitleOngoing.Columns.ResourceTitle,

我将亚音速2.2与.NET2.0一起使用,当我包含“分组依据”时,出现了一个错误

最初我有这个代码,它工作得很好:

    SqlQuery etResourceTitle = new Select(ResTitleOngoing.Columns.ResourceTitleID,
                                          ResTitleOngoing.Columns.ResourceTitle, 
                                          VenVendor.Columns.Title,
                                          ResTitleOngoingStatus.Columns.Status).From(Tables.ResTitleOngoing);

    etResourceTitle.InnerJoin(ResTitleOngoingStatus.ResourceTitleIDColumn, ResTitleOngoing.ResourceTitleIDColumn);
    etResourceTitle.LeftOuterJoin(VenVendor.VendorIDColumn, ResTitleOngoing.VendorIDColumn);

    etResourceTitle.OrderAsc(ResTitleOngoing.Columns.ResourceTitle);

    etResourceTitle.ExecuteDataSet();
然后我添加了“分组依据”,这是我的代码:

    SqlQuery etResourceTitle = new Select(Aggregate.GroupBy(ResTitleOngoing.Columns.ResourceTitleID),
                                          Aggregate.GroupBy(ResTitleOngoing.Columns.ResourceTitle), 
                                          Aggregate.GroupBy(VenVendor.Columns.Title),
                                          Aggregate.GroupBy(ResTitleOngoingStatus.Columns.Status)).From(Tables.ResTitleOngoing);

    etResourceTitle.InnerJoin(ResTitleOngoingStatus.ResourceTitleIDColumn, ResTitleOngoing.ResourceTitleIDColumn);
    etResourceTitle.LeftOuterJoin(VenVendor.VendorIDColumn, ResTitleOngoing.VendorIDColumn);

    etResourceTitle.OrderAsc(ResTitleOngoing.Columns.ResourceTitle);

    etResourceTitle.ExecuteDataSet();
我得到了错误:“不明确的列名'ResourceTitleID'。”

执行etResourceTitle.BuildSqlStatement();我得到:

选择ResourceTitleID作为“GroupByOfResourceTitleID”, ResourceTitle作为“GroupByOfResourceTitle”, 标题为“GroupByOfTitle”, 状态为“GroupByOfStatus” 来自[dbo]。[RES_titleongo] [dbo].[RES\u TitleOngoingStatus]上的内部联接[dbo].[RES\u TitleOngoingStatus]。[ResourceTitleID]=[dbo].[RES\u TitleOngoingStatus].[ResourceTitleID] [dbo].[RES_TitleOngoing].[VendorID]=[dbo].[VEN_Vendor].[VendorID]上的左外部联接[dbo].[VEN_Vendor] 按ResourceTitleID、ResourceTitle、Title、Status分组 按资源名称排序ASC

所以,有人可以帮我解决这个错误

谢谢
Alan

您的表RES_TitleOngoing和RES_TitleOngoingStatus都包含一个名为ResourceTitleID的列,但您在分组中按部分指定了ResourceTitleID,因此sql server不知道要分组哪个ResourceTitleID

注:

只返回字符串“ResourceTitleID”

您应该尝试以下方法之一:

Aggregate.GroupBy(ResTitleOngoing.ResourceTitleIDColumn)
Aggregate.GroupBy(ResTitleOngoing.Schema.QualifiedName + "."
                  + ResTitleOngoing.Columns.ResourceTitleID)

谢谢Schlaviener。这解决了我的问题。我使用了Aggregate.GroupBy(restitleonging.ResourceTitleIDColumn)Alan
Aggregate.GroupBy(ResTitleOngoing.ResourceTitleIDColumn)
Aggregate.GroupBy(ResTitleOngoing.Schema.QualifiedName + "."
                  + ResTitleOngoing.Columns.ResourceTitleID)