Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как заставить EF делать join при запросе? / 6 сообщений из 6, страница 1 из 1
26.11.2012, 11:08
    #38052819
pavd2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить EF делать join при запросе?
Вопрос - как заставить EF делать join при запросе? Использую EF 5 Code First. Для примера, предположим есть классы и запросы к БД

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    public class Т1
    {
        public int Id { get; set; }
        public int? Т2Id { get; set; }
	public virtual Т2 Т2 { get; set; }
    }

    public class Т2
    {
        public int Id { get; set; }
        public string Name { get; set; }

    }
	
    var q =  (from o in DBContext.Т1s where o.Id > 3 select o).ToList(); // Идет запрос к БД
	 
    foreach(var obj in q)
    {
        var c = obj.Т2.Name; // Идет запрос к БД
    }



Хотелось бы сделать запрос так, чтобы 1 раз прошел join при селекте и в классе А свойство B заполнилось автоматом. И при обращении к нему запроса к БД не происходило.
Ну или какие-то другие (удобные) способы решения проблемы выборки значений из нескольких таблиц, желательно, чтобы не были нужны какие-то новые классы.
...
Рейтинг: 0 / 0
26.11.2012, 11:17
    #38052836
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить EF делать join при запросе?
Код: c#
1.
2.
3.
4.
5.
6.
var q =
    from t1 in DBContext.Т1s 
    where o.Id > 3 
    select new { T1 = t1, T2 = t1.T2 };

var r = q.ToArray();
...
Рейтинг: 0 / 0
26.11.2012, 11:18
    #38052838
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить EF делать join при запросе?
o.Id > 3

t1.Id > 3
...
Рейтинг: 0 / 0
26.11.2012, 12:02
    #38052937
pavd2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить EF делать join при запросе?
А более элегантного нет метода? А то создавать новый объект со свойствами A и B, хотя в объекте A свойство B уже есть, и нужно лишь его заполнить, сделав join. Казалось бы, идея вполне очевидная и полезная.
...
Рейтинг: 0 / 0
26.11.2012, 13:30
    #38053138
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить EF делать join при запросе?
...
Рейтинг: 0 / 0
26.11.2012, 14:08
    #38053227
pavd2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить EF делать join при запросе?
Да, это именно то, что надо, спасибо! Для работы с ним, чтобы использовать лямбда-выражения нужно добавить using System.Data.Entity; + для контроля, что нет Lazy Loading (загрузки по запросу) советуют убрать у свойства объекта virtual.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как заставить EF делать join при запросе? / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]