powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Переход с LinqToSql на EF
4 сообщений из 4, страница 1 из 1
Переход с LinqToSql на EF
    #35712723
googman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу оговорюсь - в EF я полный ноль. Просто решил поразбираться в целях самообразования.

Взял проект, написанный с использованием LinqToSql и решил ради интереса перевести его на EF.

* При создании модели сразу понравилось нормальное понимание связи многие-ко-многим, т.к. в L2S здесь приходилось немного извращаться. Но я отклонился от темы. *

Теперь вопрос:
Как я понял, что "ленивой" загрузки по-умолчанию в EF нет.
Если я хочу, к примеру, получить коллекцию объектов Permission у объекта User, то в LinqToSql это делалось следующим образом:
Код: plaintext
1.
User curUser = ...;
var userPermissions = curUser.Permissions;
(к последней строке можно было добавить .ToList(), чтобы загрузить все без отлагательств в память)

В EF все почти также:
Код: plaintext
1.
2.
User curUser = ...;
curUser.Permissions.Load();
var userPermissions = curUser.Permissions;

Но, это хорошо ведь, когда коллекция Permissions содержит немного записей. А у юзер тысячи Permissions и мне нужно взять, к примеру, только те, чей Id меньше 10?

В LinqToSql было бы так:
Код: plaintext
var userPermissions = curUser.Permissions.Where(permission => permission.PermissionID < 10).ToList();

Какой код (поизящней) был бы эквивалентом этому в EF?

Так как-то совсем глупо получается, потому что сначала в память грузим все "пермишны" юзера и только потом фильтруем (опять же в памяти, а не на стороне сервера).
Код: plaintext
1.
curUser.Permissions.Load();
var userPermissions = curUser.Permissions.Where(permission => permission.PermissionID < 10);

EF вообще умеет LINQ-запросы (пусть также ограниченно как и L2S) конвертировать в реальные SQL-запросы?
...
Рейтинг: 0 / 0
Переход с LinqToSql на EF
    #35713082
googman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
User curUser = ...;
var userPermissions = curUser.Permissions.CreateObjectQuery().Where(perm => perm.PermissionID < 10);

Ура, товарищи! :)

Этот подход имеет какие-нибудь подводные камни в сравнении с LinqToSql?

p.s. (offtop) Очень пожалел, что создал тему не в форуме по C#. Данный форум практически мертвый. Судя по количеству прочтений, большая часть из которых - я сам :), сюда редко кто наведывается, поэтому создавать здесь посты невыгодно. :(
...
Рейтинг: 0 / 0
Переход с LinqToSql на EF
    #35713418
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
googman
p.s. (offtop) Очень пожалел, что создал тему не в форуме по C#. Данный форум практически мертвый. Судя по количеству прочтений, большая часть из которых - я сам :), сюда редко кто наведывается, поэтому создавать здесь посты невыгодно. :(
Правильно и сделали. Вам стало бы легче, если б 28 новичков просмотрели ваш топ и ничего не ответили?
...
Рейтинг: 0 / 0
Переход с LinqToSql на EF
    #35719419
OldWoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет! Применяю EF. Исчерпывающая информация в BOL. Есть две книги
E-books :: Pro LINQ Object Relational Mapping in C# 2008
LINQ Unleashed: for C# (Unleashed)
Очень продвинутая модель - начиная с EntityState и кончая всяким наследованием
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Переход с LinqToSql на EF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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