2

テキスト ボックスに入力された姓に一致するすべてのレコードを表示しようとしています。2 つのテーブルがあるため、これには「volID」列での INNER JOIN が必要です。

<asp:TextBox ID="lName" runat="server"></asp:TextBox>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" Visible="true"></asp:GridView>
<asp:linkButton ID="btnSubmit" runat="server" onclick="btnSubmit_Click" />

コードビハインド:

 protected void btnSubmit_Click(object sender, EventArgs e)
    {
            GridView1.DataSource = new Select("*")
            .From(PastAwardName.Schema)
            .InnerJoin(PastAwardName.VolIDColumn, PastAwardType.VolIDColumn)
            .Where(PastAwardName.Columns.LName).IsEqualTo(this.lName.Text)
            .ExecuteReader();

            GridView1.DataBind();
    }

Subsonics サイトの例からこれを実行しようとしましたが、機能しません。以下のエラーが表示されます。

Server Error in '/' Application. 
________________________________________
The objects "dbo.pastAwardNames" and "dbo.pastAwardNames" in the FROM clause have the same exposed names. Use correlation names to distinguish them. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: The objects "dbo.pastAwardNames" and "dbo.pastAwardNames" in the FROM clause have the same exposed names. Use correlation names to distinguish them.

Source Error: 

Line 30: 
Line 31: 
Line 32:         GridView1.DataSource = new Select("*")
Line 33:             .From(PastAwardName.Schema)
Line 34:             .InnerJoin(PastAwardName.VolIDColumn, PastAwardType.VolIDColumn)
4

7 に答える 7

3

私はこれと同様の問題を抱えており、エラーテキスト「FROM句には同じ公開された名前があります」とSubSonic 2.2を検索してこのページを発見しました。

とにかく、Subsonic 2.2 で完全に動作し、非常にきれいに見えるコードを投稿すると思いました..

しばらく頭を悩ませていたので、誰かがそれを役に立てば幸いです!!

IDataReader reader = new SubSonic.Select(CityMapping.MasterCityColumn, CityMapping.ChildCityColumn, CityMappingTourType.TourTypeCodeColumn)
                .From<CityMapping>()
                .InnerJoin(CityMappingTourType.CityMappingIDColumn, CityMapping.IdColumn)
                .OrderAsc(CityMapping.Columns.MasterCity, CityMapping.Columns.ChildCity, CityMappingTourType.Columns.TourTypeCode)
                .ExecuteReader();
于 2011-02-16T15:54:20.027 に答える
1

返信ありがとうございます。現在、次のコードを使用して動作しています。

private void BuildGridView1()
    {
        GridView1.DataSource = new Select(PastAwardName.Schema.TableName + ".*", PastAwardType.Schema.TableName + ".*")
              .From(PastAwardName.Schema)
              .InnerJoin(PastAwardType.Schema.TableName, PastAwardType.Columns.VolID, PastAwardName.Schema.TableName, PastAwardName.Columns.VolID)
              .Where(PastAwardName.Columns.LName).Like(this.txtSearchName.Text)
              .OrderAsc(PastAwardType.Columns.AwardYear)
              .ExecuteDataSet();
    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        BuildGridView1();
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataBind();
    }
于 2009-04-28T14:24:16.487 に答える
1

結合線を逆にする必要があると思います。

.InnerJoin(PastAwardName.VolIDColumn, PastAwardType.VolIDColumn)

する必要があります

.InnerJoin(PastAwardType.VolIDColumn, PastAwardName.VolIDColumn)
于 2009-04-15T17:07:29.417 に答える
0

これは2.2で修正したと思いますが、2.1でも修正したことを思い出します。4つのパラメータを取るInnerJoinのオーバーロードを使用してみましたか?

2.1を使用しているようです。修正されていると思うので、2.2を試してみてください。また、InnerJoinにはいくつかのオーバーロードがあり、結合するテーブルと列を明示的に指定できます。

于 2009-04-15T02:03:21.433 に答える
0

クエリは正しいようですが、何が問題なのかわかりません。

単純なコレクションを作成して書き直し、それをグリッド ビューにバインドして、同じエラーが発生するかどうかを確認できますか?

このリンクをチェックしましたか?

于 2009-04-14T21:45:04.393 に答える