Игнорировать записи, помеченные как удаленные в свойствах навигации в EF 4.0 - PullRequest
3 голосов
/ 20 мая 2010

Я добавил столбец «IsDeleted» для каждого объекта в моей модели Entity Framework 4.0 и реализовал интерфейс для него. Как я могу добиться того, чтобы объекты с IsDeleted, установленным на «true», игнорировались всеми наборами объектов и свойствами Navigation в моей модели? Я думаю, что фильтрация результата с использованием LinQ не работает, потому что результат не может быть преобразован обратно в ObjectSet.

Кто-нибудь может мне помочь, пожалуйста?

Кстати: мой шаблон генерирует наборы объектов в классе контекста, например:

Private _Persons As ObjectSet(Of Person)
Public ReadOnly Property Persons() As ObjectSet(Of Person)
    Get
        If (_Persons Is Nothing) Then
            _Persons = MyBase.CreateObjectSet(Of Person)("Persons")
        End If
        Return _Persons
    End Get
End Property

и свойства навигации для сущностей, подобных этой:

<XmlIgnoreAttribute()>
<SoapIgnoreAttribute()>
<DataMemberAttribute()>
<EdmRelationshipNavigationPropertyAttribute("Model", "Map_Persons_Organisations", "Persons")>
 Public Property Persons() As EntityCollection(Of Person)
    Get
        Return CType(Me,IEntityWithRelationships).RelationshipManager.GetRelatedCollection(Of Person)("Model.Map_Persons_Organisations", "Persons")
    End Get
    Set
        If (Not value Is Nothing)
            CType(Me, IEntityWithRelationships).RelationshipManager.InitializeRelatedCollection(Of Person)("Model.Map_Persons_Organisations", "Persons", value)
        End If
    End Set
End Property

1 Ответ

0 голосов
/ 20 мая 2010

Какова цель вашего флага IsDeleted? Статус помеченных для удаления объектов обновляется с помощью ObjectStateManager . Вы можете определить, был ли объект помечен для удаления до вызова SaveChanges(), запросив ObjectStateManager.

Если вы хотите исключить удаленные объекты из ваших запросов, позвоните SaveChanges(), помечая их для удаления. Вы также можете использовать AcceptChanges(), чтобы удалить объекты из коллекции без фиксации удаления в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...