Информация об изменениях

Сообщение Re[69]: Тормознутость и кривость linq от 15.04.2016 17:22

Изменено 15.04.2016 18:46 Serginio1

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


S>> И я тебе уже 150000 раз говорил про возможность предварительной компиляции запроса. То есть построение запроса делается только один раз. Кстати в тестах даппера это есть. Но ты опять ничего не видишь


_>А ты в начале продемонстрируй здесь как выглядит подобный код со скомпилированными запросами, а потом говори об этом.)

Уже 150000 и давал ссылки. Уже устал. Но ты все твердишь одно и тоже, даже сам ни разу не попробовав. Не читал, но осуждаю.
Ты теоретик ....

А что бы не делать синтетических тестов можно взять реальный, сделать копию и нагрузить DoS атакой.
Здравствуйте, alex_public, Вы писали:


S>> И я тебе уже 150000 раз говорил про возможность предварительной компиляции запроса. То есть построение запроса делается только один раз. Кстати в тестах даппера это есть. Но ты опять ничего не видишь


_>А ты в начале продемонстрируй здесь как выглядит подобный код со скомпилированными запросами, а потом говори об этом.)

Уже 150000 и давал ссылки. Уже устал. Но ты все твердишь одно и тоже, даже сам ни разу не попробовав. Не читал, но осуждаю.
Ты теоретик ....

А что бы не делать синтетических тестов можно взять реальный, сделать копию и нагрузить DoS атакой.

Кстати в EF можно использовать Database.SqlQuery
SqlQuery<TElement>(String, Object[])


https://msdn.microsoft.com/ru-ru/library/system.data.entity.database.sqlquery(v=vs.113).aspx
http://metanit.com/sharp/entityframework/5.1.php

Итак, получим все модели из таблицы Companies:



 using(PhoneContext db = new PhoneContext())
{
    var comps = db.Database.SqlQuery<Company>("SELECT * FROM Companies");
    foreach (var company in comps)
        Console.WriteLine(company.Name);
}



Выражение SELECT извлекает данные из таблицы. Так как эта таблица сопоставляется с моделью Company и хранит объекты этой модели, то данный вызов типизируется классом Company: db.Database.SqlQuery<Company>()

Другая версия метода SqlQuery() позволяет использовать параметры. Например, выберем из бд все модели, которые в названии имеют подстроку "Samsung":


 using(PhoneContext db = new PhoneContext())
{
    System.Data.SqlClient.SqlParameter param = new System.Data.SqlClient.SqlParameter("@name", "%Samsung%");
    var phones = db.Database.SqlQuery<Phone>("SELECT * FROM Phones WHERE Name LIKE @name",param);
    foreach (var phone in phones)
        Console.WriteLine(phone.Name);
}



Класс SqlParameter из пространства имен System.Data.SqlClient позволяет задать параметр, который затем передается в запрос sql.


Есть свобода для использования сложных запросов, с типизацией результата