Загрузка выбранных примитивных свойств в Entity Framework - PullRequest
0 голосов
/ 26 августа 2011

У меня есть следующая структура в базе данных Oracle:

Course(CourseId, Name)
->Student(StudentId, Name, Comment, CourseId)
->Subject(SubjectId, Name, SubjectComment, CourseId)

Студент содержит некоторые из Примитивных свойств (StudentId, Name, CourseId, Comment) и Свойство навигации (Courses [Linked with DTO name Course on CourseId]).

Структура таблицы также идентична структуре Entity и в настоящее время использует явную загрузку для извлечения данных из базы данных Oracle, используя LoadProperty и Load.

Мне нужно загрузить коллекцию и объект с выбранным свойством, как Загрузить студента с StudentId и Именем (без столбца Комментарий).

LoadProperty(Student, s => s.Courses), загружать только CourseId (не загружать свойство примитива Name в Course DTO). Таким образом, Student.Courses.First().CourseId будет значением, а имя будет нулевым, поскольку намеренно исключено из загрузки из базы данных.

LoadProperty(Course, c => c.Subjects) загружать только SubjectId без свойства Name, даже не загружать в базу данных для загрузки.

Есть ли способ включить / исключить типы примитивов для загрузки?

1 Ответ

4 голосов
/ 27 августа 2011

Не со свойством load и не с сущностями. Вы должны создать пользовательский запрос и использовать проекцию для загрузки только выбранных столбцов:

var student = from s in context.Students
              select new {
                      StudentId = s.StudentId,
                      ... // Other student's properties
                      CourseId = s.Course.Id,
                      SubjectIds = s.Courese.Subjects.Select(s => s.Ids)   
                  };
...