Re[98]: Тормознутость и кривость linq
От: alex_public  
Дата: 05.05.16 00:05
Оценка: :)
Здравствуйте, IT, Вы писали:

_>>Ну покажи пример какого-нибудь выражения, которое на твой взгляд хорошо выглядит в linq и будет ужасно выглядеть с помощью такой библиотечки. )

IT>Так будет выглядеть любое выражение.
_>>Сравним так сказать в непосредственной близости. )
IT>Гы-гы. Ты уверен? Я сейчас вытащу на свет какого-нибдуь монстрика и для тебя вечер сразу перестанет быть томным
IT>Лядно, так и быть, что-нибудь попроще. Вот кусочек RSDN'а:
IT>
IT>from m in db.Messages
IT>join f in db.AllowedForumsView(Account.ID) on m.ForumID equals f.ID
IT>where
IT>    ids.Contains(m.ID) &&
IT>    m.BlogMessages.All(bm => bm.BlogID != BlogService.Cache.GetBlogID(db, id))
IT>orderby
IT>    m.Subject
IT>select
IT>    m.ID + ", " + m.Subject;
IT>


Хм, что-то не очень понятно (видимо потому что я с Linq не работаю), в особенности чем являются различных идентификаторы не из таблиц (которые не m. и f.). Или может вместо объяснения ты просто покажешь какой sql генерируется из этого запроса? )

_>>Я в курсе. ) Более того, данный вопрос уже подробно обсуждался прямо в этой темке чуть выше. ) И уже был ответ на это, что это довольно странная теория, т.к. при работе скажем на голых строках в том же C# короче записать просто q+=p?"Field1=@p":"Field1 IS NULL";

IT>Ужос. Ты знаешь куда это привело человечество к концу 90-х? К BLL и DAL. Из-за того, что вот практически весь код приложений состоял из вот таких вот испражнений.

Ну да, DAL — это правильное решение для сложных проектов и особенно рассчитанных на работу с разными СУБД.

_>>вместо указанного ужастика. Но опять же это всё не касается случая C++ и той библиотечки, т.к. там вопрос с null просто не стоит. )))

IT> Т.е. глазки закрыли и мы в домике? В C++ нет налов, значит их не должно быть и в базе данных

В базе null конечно же может быть и для работы с ним там в библиотечке есть все необходимые средства (и соответствующий предикат условий и проверка результатов запросов). Автору даже предлагали сделать возврат значений для не "not null" колонок через std::optional (аналог Nullable<T> из C#), но он предпочёл обойтись проверочной функций (видимо из соображений эффективности).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.