一对多关系,删除子行

时间:2017-04-13 09:04:11

标签: asp.net-mvc vb.net entity-framework

我有一个父表和子表,它们用外键链接回父表。我试图更新父表中的行以及子表中关联的所有行。我可以更新父表行,当我尝试更新子表时,它会创建一个新行而不是更新。

因此我首先尝试使用下面的代码删除子行,然后再添加新编辑的行。我的问题是,使用remove()我的子行现在与父表没有关联,但行仍然存在?外键已变为null。

我的问题是,我如何删除这些行而不只是删除关联?

使用代码优先方法生成关系。

非常感谢

     <Authorize(Roles:="Admin, Employee, User")>
    Function SaveEdit(id As String) As ActionResult

        Dim PreSaveBuild As PBBuilds = DirectCast(Session("object"), PBBuilds)
        Dim context = New ApplicationDbContext()
        Dim retrieveOrders = context.PBBuilds.Where(Function(x) x.Id = PreSaveBuild.EditBuildNo).FirstOrDefault()

        retrieveOrders.Video = PreSaveBuild.Video
        retrieveOrders.FasciaStyle = PreSaveBuild.FasciaStyle
        retrieveOrders.FinishesPerEntrances = PreSaveBuild.FinishesPerEntrances
        retrieveOrders.FrameStyle = PreSaveBuild.FrameStyle
        retrieveOrders.MainEntrances = PreSaveBuild.MainEntrances
        retrieveOrders.PanelStyle = PreSaveBuild.PanelStyle
        retrieveOrders.SystemId = id
        retrieveOrders.SystemLevel = PreSaveBuild.SystemLevel
        retrieveOrders.TotalApartments = PreSaveBuild.TotalApartments
        retrieveOrders.TotalBlocks = PreSaveBuild.TotalBlocks
        retrieveOrders.TotalNet = PreSaveBuild.TotalNet
        retrieveOrders.VideoType = PreSaveBuild.VideoType


        For Each item In retrieveOrders.MainEntranceOptions.ToList()
            retrieveOrders.MainEntranceOptions.Remove(item)
        Next

        context.SaveChanges()


        Return RedirectToAction("Index", "Dashboard")
    End Function

1 个答案:

答案 0 :(得分:0)

您需要从Feature Chrome Firefox Internet Explorer .... Basic support (Yes) 2 9 中的DbSet删除这些对象。

修复此部分,只需重命名context,因为我不知道正确的名称:

DbSet