0

マルチビューのビュー間を遷移することによって発生するプロセスを最初に作成しましたが、正常に機能しました。この同じコードを ASP.NET ウィザードに移動したところ、2 番目のステップでエラーが発生し続けます。エラー: メソッド 'System.Object AndObject(System.Object, System.Object)' には、サポートされている SQL への変換がありません。コードをウィザードに移動するときにこれが発生する理由はありますか? 私はそれが何かばかげていると確信していますが、コードを3〜4回チェックしたところ、操作的には同じように見えます。コードは次のとおりです: ' .NET Framework の LDAP 部分が利用可能であることを確認してください。Imports System.DirectoryServices ' LDAP とのインターフェースを可能にします。Imports System.Data.Linq.SqlClient ' LINQ SQL メソッドを使用できるようにします。

部分的なパブリック クラス buildit は System.Web.UI.Page を継承します

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    ' ******* Grab the LDAP info. for current user.
    Dim ID As FormsIdentity = DirectCast(User.Identity, FormsIdentity)
    Dim ticket As FormsAuthenticationTicket = ID.Ticket
    Dim adDirectory As New DirectoryEntry("LDAP://OU=[info],DC=[info],DC=[info],DC=[info]")
    ' We need to strip off @email.address from the ticket name, so we'll use substring to grab the first 
    ' five characters.
    Dim adTicketID As String = ticket.Name.Substring(0, 5)
    Dim adEmployeeID As String
    adEmployeeID = adDirectory.Children.Find("CN=" & adTicketID).Properties("employeeID").Value

    ' ******* Lets make sure they have signed the housing contract and the community covenant.
    Dim dbContractSigs As New pcRoomOccupantsDataContext
    Dim pcContractSigs = From p In dbContractSigs.webContractSigs _
                         Where p.people_id = adEmployeeID _
                         Select p.res_contract, p.comm_life
    If pcContractSigs.Count.Equals(0) Then
        Response.Redirect("signcontract.aspx")
    Else
        Dim cs As String = pcContractSigs.First.res_contract.ToString
        Dim cos As String = pcContractSigs.First.comm_life.ToString
        If cs = "Y" And cos = "Y" Then
            ' We don't need to do anything.
            ' We use the else statement b/c there are multiple conditions that could occur besides "N"
            ' that would cause us to redirect to the signature page, whereas there is only one valid response - "Y".
        Else
            ' Redirect the individual to our contracts page.
            Response.Redirect("signcontract.aspx")
        End If
    End If

    ' ******* Now lets find out what gender that individual is.
    Dim dbIndividual As New pcPeopleDataContext
    Dim pcIndividual = From p In dbIndividual.PEOPLEs _
                       Join d In dbIndividual.DEMOGRAPHICs On p.PEOPLE_CODE_ID Equals d.PEOPLE_CODE_ID _
                       Where p.PEOPLE_ID = adEmployeeID _
                       Select p, d
    ' Make a session variable that will carry with the user throughout the session delineating gender.
    Session("sgender") = pcIndividual.First.d.GENDER.ToString
    ' Debug Code.
    ' Put a stop at end sub to get these values.
    ' Response.Write(adEmployeeID)

End Sub
Sub LinqDataSource1_Selecting(ByVal sender As Object, ByVal e As LinqDataSourceSelectEventArgs)
    ' Lets get a list of the dorms that are available for user's gender.
    Dim pcDorms As New pcDormsDataContext
    Dim selectedDorms = (From sd In pcDorms.PBU_WEB_DORMs _
                    Where IIf(Session("sgender").ToString = "M", sd.description = "Male", sd.description = "Female") _
                    Select sd.dorm_building).Distinct()
    e.Result = selectedDorms
End Sub
Public Sub Button_ItemCommand(ByVal Sender As Object, ByVal e As RepeaterCommandEventArgs)
    ' ******** Lets pass on the results of our query in LinqDataSource1_Selecting.
    Session("sdorm") = RTrim(e.CommandName)

    ' ******** Debug code.
    ' Response.Write(sDorm)
End Sub
Sub LinqDataSource2_Selecting(ByVal sender As Object, ByVal e As LinqDataSourceSelectEventArgs)
    ' ******** Get a list of rooms available in the dorm for user's gender.
    Dim pcDorms As New pcDormsDataContext
    Dim selectedDorm = (From sd In pcDorms.PBU_WEB_DORMs _
                        Where IIf(Session("sgender").ToString = "M", sd.description = "Male", sd.description = "Female") _
                        And sd.dorm_building = CStr(Session("sdorm")) _
                        Select sd.dorm_room)
    e.Result = selectedDorm
End Sub
Public Sub Button2_ItemCommand(ByVal Sender As Object, ByVal e As RepeaterCommandEventArgs)
    ' ******** Lets pass on the results of our query in LinqDataSource2_Selecting.
    Session("sroom") = RTrim(e.CommandName)
End Sub
Sub LinqDataSource3_Selecting(ByVal sender As Object, ByVal e As LinqDataSourceSelectEventArgs)
    ' ******** Grabs the individuals currently listed as residing in this room and displays them. Note the use of SqlMethods.Like 
    ' for dorm_building, this is due to legacy issues where dorms sometimes have leading or trailing blank spaces. We could have 
    ' also used Trim.
    Dim pcOccupants As New pcRoomOccupantsDataContext
    Dim roomOccupants = (From ro In pcOccupants.webResidents _
                       Where SqlMethods.Like(ro.dorm_building, "%" & CStr(Session("sdorm")) & "%") _
                        And ro.dorm_room = CStr(Session("sroom")) _
                      Select ro.person_name)
    e.Result = roomOccupants

    ' ******** Debug code.
    'Response.Write(CStr(Session("sdorm")))
    'Response.Write(CStr(Session("sroom")))
End Sub
Protected Sub Button4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button4.Click
    ' ******** Reserve the room for a student.
End Sub

クラス終了

4

2 に答える 2

1

私の古いコードは次のようになりました。

Dim selectedDorm = (From sd In pcDorms.PBU_WEB_DORMs _
                            Where IIf(Session("sgender").ToString = "M", sd.description = "Male", sd.description = "Female") _
                            And sd.dorm_building = Session("sdorm").ToString _
                            Select sd.dorm_room)

そして機能していませんでした(ただし、MultiViewsを使用すると機能しました)。私はこれを次のように変更しました:

Dim selectedDorm = (From sd In pcDorms.PBU_WEB_DORMs _
                            Where IIf(Session("sgender").ToString = "M", sd.description = "Male", sd.description = "Female") _
                            Where sd.dorm_building = Session("sdorm").ToString _
                            Select sd.dorm_room)

そして今、それは機能します。

于 2010-03-30T20:11:02.530 に答える
0

コードを見ないとわかりません。DB から情報を取得する LINQ クエリがあり、現在エラーが発生しています。しかし、コードを見ないと何も言えません。

于 2010-03-29T15:19:09.923 に答える