我最初创建了一个通过在多视图中的视图之间转换而发生的过程,并且它工作正常。现在,我已将相同的代码移动到ASP.NET向导中,并在第二步中不断抛出错误。错误是: 方法'System.Object AndObject(System.Object,System.Object)'没有支持的SQL转换。 任何想法为什么在将代码移动到向导时会发生这种情况?我确定它有些愚蠢,但我现在已经检查了3-4次代码并且在操作上看起来相同。 这是代码: '确保我们可以使用.NET Framework的LDAP部分。 Imports System.DirectoryServices'允许我们与LDAP连接。 Imports System.Data.Linq.SqlClient'允许我们使用LINQ SQL方法。
部分公共类构建 继承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
结束班
答案 0 :(得分: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)
并且无法正常工作(但在使用MultiView时工作正常)。我改成了这个:
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)
现在它有效。
答案 1 :(得分:0)
没有看到代码就无法分辨;有一个LINQ查询从DB中提取一些信息,现在导致错误。但是,如果没有看到代码,就无法告诉你任何事情。