存储库模式 - 从多个父项中删除子元素

时间:2011-11-16 13:10:07

标签: .net vb.net entity-framework-4.1 repository-pattern

我有以下表格

   Public Class Tag

    <Key()> _
    Public Property TagID As Integer

    Public Property Reference As Integer
    Public Property Name As String

    ' Public Overridable Property Tags As ICollection(Of Tag) 
    Public Overridable Property ParentTag As Tag
    Public Overridable Property TagReferences As ICollection(Of TagReference)
End Class


Public Class TagReference
    <Key()> _
    Public Property TagReferenceID As Integer
    Public Property ReferencedID As Integer
    Public Overridable Property Tag As Tag
End Class

现在我知道2个值: 表:标签{参考} 表:TagReference {ReferenceID}

我实现了存储库模式。

现在我有一个包含正确TagReferences的标签列表,但标签可能不会被删除,而是TagReferences。

   Variabels = ReferenceValue,ReferenceID

   IEnumerable(Of Tag) =  TagRepository.GetMany(Function(el) el.Reference = ReferenceValue And el.TagReferences.Any(Function(bl) bl.ReferencedID.Equals(ReferenceID)))

如何在一行中删除包含ReferenceID的所有TagReferences?

1 个答案:

答案 0 :(得分:1)

你做不到。 EF可以通过清除所有加载的关系(带有一些特殊的前提条件)或删除父级的级联删除来逐个删除项目。如果您需要通过某些共享值删除多个实体,则需要更复杂的代码,您可以在其中加载所有这些实体并逐个删除它们,或者您需要使用SQL(直接DELETE命令或存储过程)。 / p>