实体框架外键列无效删除

时间:2015-05-05 18:23:57

标签: mysql .net vb.net entity-framework

以下是EF使用的模型:

<Table("Software")>
Public Class Software
    <Key()>
    Public Property SoftwareID As Long
    Public Property Name As String
    Public Property ...
    Public Property ...
    Public Property ...
    Public Property ...
    <ForeignKey("Name")>
    Public Overridable Property WhiteList As WhiteList
    <ForeignKey("Name")>
    Public Overridable Property BlackList As BlackList
End Class

在我的应用程序中,我想取消一个软件应用程序,即将其从白名单和黑名单表中删除(如果存在记录)。

这是我的代码,可以帮助您完成这项工作。

        Dim uow As Interfaces.IUnitOfWork = GetUnitOfWork()

        Dim software As Models.Software = uow.Software.GetByID(unlistSoftwareMessage.SoftwareId)

        If software.WhiteList IsNot Nothing Then
            uow.SoftwareWhiteList.Delete(software.WhiteList)
        ElseIf software.BlackList IsNot Nothing Then
            uow.SoftwareBlackList.Delete(software.BlackList)
        End If

        uow.Software.Update(software)
        uow.CommitChanges()

提交工作单元时,不仅删除了白名单/黑名单记录(如果存在)。但是软件表中的名称值被删除(为空)。

表的外键是名称;不是选择,我必须与之合作。

问题是,如何删除这些记录,同时保留软件的名称(即外键)。最好不要进行第二次数据库调用。

enter image description here

0 个答案:

没有答案