以下是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()
提交工作单元时,不仅删除了白名单/黑名单记录(如果存在)。但是软件表中的名称值被删除(为空)。
表的外键是名称;不是选择,我必须与之合作。
问题是,如何删除这些记录,同时保留软件的名称(即外键)。最好不要进行第二次数据库调用。