Шаблон репозитория - удаление дочерних элементов от нескольких родителей - PullRequest
1 голос
/ 16 ноября 2011

У меня есть следующие таблицы

   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)))

Как я могу удалить все TagReferences, которые содержат ReferenceID в одной строке?

1 Ответ

1 голос
/ 16 ноября 2011

Вы не можете.EF может удалять элементы только один за другим путем очистки всех загруженных отношений (с некоторыми специальными предварительными условиями) или с помощью каскадного удаления, когда родительский элемент удаляется.Если вам нужно удалить несколько сущностей по некоторому общему значению, вам нужен либо более сложный код, в котором вы загружаете все эти сущности и удаляете их одну за другой, либо вам нужно использовать SQL (либо прямую команду DELETE, либо хранимую процедуру).

...