Как можно загрузить поля ассоциаций через linq?
От: b0bi  
Дата: 27.07.12 11:20
Оценка:
К примеру есть класс:
    public class Person 
    {
        [PrimaryKey(0), NonUpdatable] public int ID      { get; set; }
        [MaxLength(50), Required]     public string Name { get; set; }

        public int PositionID { get; set; }

        [Association(ThisKey="PositionID", OtherKey="PositionID", CanBeNull=false)]
        public Position Position { get; set; }
    }


Вопрос: можно ли Linq запросом получить список персонов с заполненным полем Position?
Re: Как можно загрузить поля ассоциаций через linq?
От: Clerk  
Дата: 27.07.12 11:37
Оценка:
Здравствуйте, b0bi, Вы писали:

B>Вопрос: можно ли Linq запросом получить список персонов с заполненным полем Position?

Так:
    var q = 
        from p in db.Person
        where p.Position != null
        select p;
... << RSDN@Home 1.2.0 alpha 5 rev. 57>>
Re[2]: Как можно загрузить поля ассоциаций через linq?
От: Clerk  
Дата: 27.07.12 12:42
Оценка:
Здравствуйте, b0bi, Вы писали:

Вернее, так:
    var q = 
        from p in db.Person
        where p.Position.PositionId != null
        select p;
... << RSDN@Home 1.2.0 alpha 5 rev. 57>>
Re[3]: Как можно загрузить поля ассоциаций через linq?
От: b0bi  
Дата: 27.07.12 13:50
Оценка:
Здравствуйте, Clerk, Вы писали:

C>Здравствуйте, b0bi, Вы писали:


C>Вернее, так:

C>
    var q = 
C>        from p in db.Person
C>        where p.Position.PositionId != null
C>        select p;
C>


Я видимо неправильно поставил вопрос. Надо получить на выходе проинициализированные Person, т.е. у которых Position заполнено значениями. Запрос который вы предложили возвращает Person, у которых Position = null. Как заставить BLToolkit загрузить эти данные?
Re[4]: Как можно загрузить поля ассоциаций через linq?
От: Clerk  
Дата: 27.07.12 14:09
Оценка:
Здравствуйте, b0bi, Вы писали:

B>Я видимо неправильно поставил вопрос. Надо получить на выходе проинициализированные Person, т.е. у которых Position заполнено значениями. Запрос который вы предложили возвращает Person, у которых Position = null. Как заставить BLToolkit загрузить эти данные?


Как-то так:
    var q = 
        from p in db.Person
        select new
        {
            p,
            p.Position,
        };
... << RSDN@Home 1.2.0 alpha 5 rev. 57>>
Re[5]: Как можно загрузить поля ассоциаций через linq?
От: b0bi  
Дата: 27.07.12 15:29
Оценка:
Здравствуйте, Clerk:

Но так получится не список Person, а список кортежей с персон и Position. Можно конечно потом в цикле прицепить position к person, а без этого получается никак?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.