Re[3]: Почему вы НЕ используете Entity Framework?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 07.07.14 08:39
Оценка: 10 (1) +1
Здравствуйте, Artem Korneev, Вы писали:

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


G>>1) нельзя навесить хинты. Это вообще-то не правда, но люди упорно повторяют эту глупость.


AK>А "хинт" это что?


http://msdn.microsoft.com/en-us/library/ms187713.aspx

G>>2) генерирует плохие запросы. Правда известен ровно один случай плохих запросов — при использовании навигационных свойств и то можно обойти. В среднем генерирует запросы лучше людей.


AK>Навигационные свойства это что? Это "курсоры", или что-то другое?

Нет

Такой linq:

var query = from m in db.Master
            from d in m.Details // Mater.Details: ICollection<Detail>
            select new { m.Title, d.Title}


Превращается примерно в такой SQL

select m.Title, d.Title
from Master m
left join Details d on m.Id = d.MasterId


То есть способ не писать left join руками в Linq.
Так вот в EF появляется дополнительно вычисляемое поле, по которому потом идет сортировка. Это дает заметный оверхед если все страницы в памяти и менее 1% если страницы данных на диске для небольших выборок.


G>>5) нельзя использовать все возможности sql. но никто не мешает сделать функцию и замапить её через ef или напрмую вызвать sql через ef.


AK>Да, про вызов хранимых процедур из EF я знаю, но в идеале я хотел бы избавиться от хранимых процедур полностью.

AK>А какие именно возможности SQL нельзя использовать через EF?
Например в linq нельзя написать MERGE оператор, использовать output выражения, табличные параметры для функций, FullTextSearch, ranking функции pivot\untivot и много чего еще. Большую часть можно обойти изобретением своих функий, но иногда проще тупо SQL написать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.