Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net LINQ语句不更新数据库?_Asp.net_Sql_Vb.net_Linq To Sql - Fatal编程技术网

Asp.net LINQ语句不更新数据库?

Asp.net LINQ语句不更新数据库?,asp.net,sql,vb.net,linq-to-sql,Asp.net,Sql,Vb.net,Linq To Sql,我有以下代码: Dim dbHousing As New dcHousingDataContext Dim pullresidents = From p In dbHousing.webResidents _ Select p.dorm_building, p.dorm_room, p.occupantnum _ Order By dorm_building, dorm_room Dim j as i

我有以下代码:

        Dim dbHousing As New dcHousingDataContext
    Dim pullresidents = From p In dbHousing.webResidents _
                Select p.dorm_building, p.dorm_room, p.occupantnum _
                Order By dorm_building, dorm_room
    Dim j as integer = 1
    Dim previous As String = ""
    For Each row In pullresidents
        If previous = "" Then
            Dim wResident As New webResident
            wResident.occupantnum = j
            dbHousing.SubmitChanges()
            j = j + 1
            previous = row.dorm_building & " " & row.dorm_room
        Else
            If previous = row.dorm_building & " " & row.dorm_room Then
                Dim wResident As New webResident
                wResident.occupantnum = j
                dbHousing.SubmitChanges()
                j = j + 1
            Else
                Dim wResident As New webResident
                j = 1
                wResident.occupantnum = j
                dbHousing.SubmitChanges()
                j = j + 1
                previous = row.dorm_building & " " & row.dorm_room
            End If
        End If

    Next
当我运行它时,查看调试器,一切看起来都正常,但当我检查数据库表时,它应该插入到其中-列值(对于OccupentNum)没有更改-它们仍然为null


不确定这是否相关,但请注意,我现在已将j显式更新为整数。调试时,我注意到wResident.OccupentNum显示为类型“Integer?”-但这似乎没有任何区别-当我重新运行时,它仍然显示为类型“Integer?”

如果这是错误的,请原谅我-但是如果要保存新创建的“webResident”对象,您不需要将它们与上下文关联吗?我看不出dbHousing.SubmitChanges()如何保存它不知道的webResident。

如果这是错误的,请原谅我-但是如果要保存新创建的“webResident”对象,您不需要将它们与上下文相关联吗?我看不出dbHousing.SubmitChanges()如何能够保存它不知道的WebResident。

对于pullresidents中的每一行,使用
迭代所有获取的对象,但从不修改
行。因此,没有可以发送回数据库的更改。

您对pullresidents中的每一行使用
迭代所有获取的对象,但从不修改
行。因此,没有可以发送回数据库的更改。

Dave,在提交更改之前,您需要先将新的webResident对象插入表中


dbHousing.webResidents.InsertOnSubmit(webResident)

Dave,在提交更改之前,需要先将新的webResident对象插入表中


dbHousing.webResidents.InsertOnSubmit(webResident)

我觉得你在这里做得太多了

您只想更改行,对吗

尝试这样做:

Dim wResident As New webResident 
wResident.occupantnum = j 
dbHousing.SubmitChanges() 
j = j + 1 
为此:

row.occupantnum = j 
dbHousing.SubmitChanges() 
j = j + 1

我觉得你在这里做得太多了

您只想更改行,对吗

尝试这样做:

Dim wResident As New webResident 
wResident.occupantnum = j 
dbHousing.SubmitChanges() 
j = j + 1 
为此:

row.occupantnum = j 
dbHousing.SubmitChanges() 
j = j + 1


什么是后端服务器?SQL Server?Oracle?SQL Server 2008在后端。什么是后端服务器?SQL Server?Oracle?SQL Server 2008位于后端。如何让它将我尝试更改的职业编号与该行的记录相关联?如果我执行row.OccupentNum=j,则表示该行是只读的?这是因为您使用
选择p.dorm\u building、p.dorm\u room、p.OccupentNum
执行到匿名类型的投影。删除此投影以获取完整的实体(只需使用
选择p
),它将是可更新的。使用IQueryable.ToArray()然后使用索引访问数组。。。然后你可以修改值Dan是对的,不要选择p.dorm\u building,p.dorm\u room,p.OccupentNum,只需选择pDaniel-说真的,你是我的英雄!我如何告诉它将我试图更改的职业编号与该行的记录相关联?如果我执行row.OccupentNum=j,则表示该行是只读的?这是因为您使用
选择p.dorm\u building、p.dorm\u room、p.OccupentNum
执行到匿名类型的投影。删除此投影以获取完整的实体(只需使用
选择p
),它将是可更新的。使用IQueryable.ToArray()然后使用索引访问数组。。。然后你可以修改值Dan是对的,不要选择p.dorm\u building,p.dorm\u room,p.OccupentNum,只需选择pDaniel-说真的,你是我的英雄!请看我在上面对Daniel答案的评论…我不理解如何将其与当前上下文关联。请看我在上面对Daniel答案的评论…我不理解如何将其与当前上下文关联。谢谢Rafe。实际上,我正在尝试更新我已提取的现有行对象-而不是添加新对象…我遗漏了什么?我认为您在这里做的太多了。您只想更改行,对吗?尝试将此:Dim wResident作为新的webResident wResident.OccupentNum=j dbHousing.SubmitChanges()j=j+1放入以下行:row.OccupentNum=j dbHousing.SubmitChanges()中j=j+1如果要更新对象,则必须修改对象本身,而不是创建新对象-我认为您需要设置row.occuntnum=。谢谢Rafe。实际上,我正在尝试更新我已提取的现有行对象-而不是添加新对象…我遗漏了什么?我认为您在这里做的太多了。您只想更改行,对吗?尝试将此:Dim wResident作为新的webResident wResident.OccupentNum=j dbHousing.SubmitChanges()j=j+1放入以下行:row.OccupentNum=j dbHousing.SubmitChanges()中j=j+1如果要更新对象,则必须修改对象本身,而不是创建新对象-我认为您需要设置row.occuntnum=。