2013-09-30 8 views
1

Я пытаюсь обернуть коллекцию связанных объектов в один объект, используя Entity Framework. Моя ситуация выглядит следующим образом: У меня есть объект под названием «Студент» и объект под названием «Книга». Взаимосвязь между этими словами: "Student"-1-----*-"Book". Очевидно, что несколько книг могут принадлежать одному и тому же ученику. Теперь я пытаюсь объяснить упрощенное, чего я пытаюсь достичь: я хочу получить доступ к свойству Books на Student следующим образом: Student.Books, но только книги, опубликованные после 1990 года, должны содержаться в коллекции. Я думаю, мне нужно было бы перехватить инструкцию select Entity Framework для этого, но я не знаю, как это сделать. Еще лучше было бы, если свойство Books является экземпляром пользовательского класса-оболочки, который содержит коллекцию книг, поэтому я могу определить методы фильтрации коллекции непосредственно в свойстве Books. Благодарим за помощь!Entity Framework - Обтекание коллекции связанных объектов

С уважением sjkm

+0

EF не поддерживает эту функцию. Существует запрос функции добавить фильтр в 'Include' (например,' Include (s => s.Books.Where (...)) '. –

+0

Благодарим вас за разъяснение! – sjkm

+0

[This] (http: /stackoverflow.com/q/13903314/861716) также интересен для вас. Это может быть даже дубликат. –

ответ

0

Вы можете создать свойство в частичной для объекта Entity Framework модель класса для студента, как это: -

public partial class Student 
{ 
    public IQueryable<Book> FilteredBooks 
    { 
     get 
     { 
     return this.Books.Any(b=> b.PublishedDate.Year >= 1990).AsQueryable(); 
     } 
    } 

} 

В теории, теперь вы должны иметь возможность доступа: -

object.Datasource = Student.FilteredBooks.ToList(); 

Надеюсь, это поможет?

+0

Спасибо, но это мне совершенно понятно. Свойство books должно быть экземпляром класса custum. перехватить популяцию студенческого объекта. Знаете ли вы, как это сделать? – sjkm

+0

Я не уверен, что вы можете быть честным. Если вы создадите частичный класс для вашего сопоставленного объекта, это не позволит вам получить доступ к книгам свойство, поскольку оно уже реализовано enityframework. Возможно, вам придется создать частичный класс для Student и добавить новое свойство там, которое делает то, что вы хотите сделать, но это не то, что я должен был сделать раньше. – Derek

+0

Hello Derek. Спасибо за ваш ответ. Я уже думал о doi это. Любая идея, как я могу заполнить это поле, не загружая все элементы книги? Либо мне придется перехватывать выбор структуры сущности, которая возможна, насколько я знаю или иным способом. Я уверен, что есть еще одно решение, о котором мы еще ничего не знаем :) – sjkm

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