0

Я использую Entity Framework в качестве основы для внешнего интерфейса базы данных WPF.Использование предложения Where в объекте Query Included Entities (Entity Framework)

Моя структура базы данных предназначена для офисных зданий, и для этой проблемы все, что вам нужно понять, это то, что объект верхнего уровня называется рынками (подумайте о пригородных или центральных деловых районах). У рынков есть много свойств и свойств, которые имеют множество Обзоров.

Я хочу ограничить опросы, полученные до последних 10 опросов (опросы проводятся каждые 6 месяцев).

Я могу видеть, как автоматически сгенерированный код построения запроса:

Dim OMRMarketsQuery As System.Data.Objects.ObjectQuery(Of OMR.OMRInterfaceCustomCode.OMRMarket) = OMRInterfaceEntities.OMRMarkets 

    OMRMarketsQuery = OMRMarketsQuery.Include("Properties") 

    OMRMarketsQuery = OMRMarketsQuery.Include("Properties.OMRBuildingSurveys") 

Я хочу использовать где положение для фильтрации по свойству объекта OMRBuildingSurvey. Я могу написать где пункт, который будет фильтровать по идентификатору рынка (верхний уровень Entity), как это:

MRMarketsQuery = OMRMarketsQuery.Include("Properties.OMRBuildingSurveys").Where("it.ID >1000") 

Но я хочу, чтобы фильтровать по свойству объекта OMRBuildingSurveys, и я не могу показаться, найти способ навигации по нему. Я пробовал:

OMRMarketsQuery = OMRMarketsQuery.Include("Properties.OMRBuildingSurveys").Where("it.Properties.OMRBuildingSurvey.ID >1000") 

Но я получаю ошибку:

An unhandled exception of type 'System.Data.EntitySqlException' occurred in System.Data.Entity.dll 

    Additional information: 'OMRBuildingSurvey' is not a member of 'Transient.collection[OMRInterfaceModel.Property(Nullable=True,DefaultValue=)]'. To extract a property of a collection element, use a subquery to iterate over the collection. 

Если кто-то может мне точку в правильном направлении, я бы очень признателен!

Большое спасибо и у нас отличный день!

ответ

-1

Хорошо, ответ прост.

Вы не можете фильтровать, если вы используете Eager Loading или Lazy Loading. Я и несколько фрилансеров испробовали все виды методов, но ответ был, чтобы загрузить рынки и свойства, а затем закомментируйте следующую строку кода:

'OMRMarketsQuery = OMRMarketsQuery.Include("Properties.OMRBuildingSurveys") 

Чтобы загрузить обзорную деталь мы поймали ListBox Выбор недвижимости измененное событие, и именно там мы могли фильтровать следующим образом:

Private Sub Lbx_PropsByNameSelector_SelectionChanged (отправитель As Object, е Как SelectionChangedEventArgs) Ручки Lbx_PropsByNameSelector.SelectionChanged

Dim propertyAdListBox = CType(sender, ListBox) 
Dim selectedProperty = CType(propertyAdListBox.SelectedItem, OMRInterfaceCustomCode.Property) 

If Not IsDBNull(selectedProperty) Then 

    Dim RSurveysQuery = From r In OMRInterfaceEntities.OMRBuildingSurveys Where r.PeriodID > 80 And r.PropertyID = selectedProperty.ID 

    Dim RSurveysList = RSurveysQuery.ToList 

    If RSurveysList.Any() Then 
     Dim RecentSurveysSource = CType(Me.FindResource("OMRMarketsPropertiesOMRBuildingSurveysViewSource"), CollectionViewSource) 
     RecentSurveysSource.Source = RSurveysList 
    End If 
End If 

End Sub

 Смежные вопросы

  • Нет связанных вопросов^_^