powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ORM vs sql
25 сообщений из 451, страница 5 из 19
ORM vs sql
    #37604552
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeТам должны обрабатываться данные (!) все. Даже, если напишете 1+2 - только на SQL-сервере.
1. Во-первых, это бред. 1 + 2 можно и не на SQL сервере исполнять. SQL сервер - это хранение данных, а не математический слой.
2. Во-вторых, чем его запрос не угодил? Конкретно по пунктам.
ShSergeПо многим причинам, хотя бы по таким элементарным, что числовые типы совершенно однозначно не маппятся.
А по-русски?

SeVaМСУУже 100500 раз объяснял. Вот тут вкратце.

Начать лучше с этого ORM is the Vietnam of the Computer Science
Начинать лучше с другого: Объекты и искусство моделирования данных
...
Рейтинг: 0 / 0
ORM vs sql
    #37604576
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaLelouchблокноте мне было лень вспоминать написание. А то, что использование DataTable в случае WPF - прошлый век, признает даже Seva

Этот код будет на серверной стороне, а на клиенте ObservableCollection
Какой код? У меня всего-дишь создается коллекция объектов - результатов запроса. Я ни строчки ее обработки не писал...
...
Рейтинг: 0 / 0
ORM vs sql
    #37604579
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchТо есть в ваших системах, чтобы показать пользователю какой-нибудь список необходимо использовать запросы с десятками join, курсоры, etc.?
И естественно все эти запросы надо пропускать через аналитиков.. )1. "Какой-нибудь" список для пользователя - это в среднем 5-10 джойнов. Но есть и на десятки.
2. Курсоры не пишем, и писать не собираемся.
3. Неправильное у вас представление о взаимодействии с аналитиками.

Это - зарубежная ERP.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604591
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffLelouchТо есть в ваших системах, чтобы показать пользователю какой-нибудь список необходимо использовать запросы с десятками join, курсоры, etc.?
И естественно все эти запросы надо пропускать через аналитиков.. )1. "Какой-нибудь" список для пользователя - это в среднем 5-10 джойнов. Но есть и на десятки.
2. Курсоры не пишем, и писать не собираемся.
3. Неправильное у вас представление о взаимодействии с аналитиками.

Это - зарубежная ERP.

По вашему ORM не справится с 5-10 join'ами?
...
Рейтинг: 0 / 0
ORM vs sql
    #37604593
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНачинать лучше с другого: Объекты и искусство моделирования данных
Mуся, я без этой статьи давно уже говорил, что ORM можно использовать только в качестве тупого DAL и что все они расчитаны на жирные графы объектов, которые совершенно неприспособлены для требований UI(разным use case нужны разные данные).
...
Рейтинг: 0 / 0
ORM vs sql
    #37604595
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchWorobjoffпропущено...
1. "Какой-нибудь" список для пользователя - это в среднем 5-10 джойнов. Но есть и на десятки.
2. Курсоры не пишем, и писать не собираемся.
3. Неправильное у вас представление о взаимодействии с аналитиками.

Это - зарубежная ERP.

По вашему ORM не справится с 5-10 join'ами?Думаю что справится. Но это будет хардкод, в котором к тому же, надублируется изрядно функционал. Представления в базе используются многими.
Запросы не очень легкие для сервера, и возможности оптимизации уже исчерпаны. Как тут будет вести ORM?
...
Рейтинг: 0 / 0
ORM vs sql
    #37604597
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffLelouchТо есть в ваших системах, чтобы показать пользователю какой-нибудь список необходимо использовать запросы с десятками join, курсоры, etc.?
И естественно все эти запросы надо пропускать через аналитиков.. )1. "Какой-нибудь" список для пользователя - это в среднем 5-10 джойнов . Но есть и на десятки.
2. Курсоры не пишем, и писать не собираемся.
3. Неправильное у вас представление о взаимодействии с аналитиками.

Это - зарубежная ERP.
10-15 Join'ов это простые запросы. Если он выполняется медленно всегда можно из ORM получить код генерируемого SQL и понять как это можно решить (я про индексы).
...
Рейтинг: 0 / 0
ORM vs sql
    #37604600
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffLelouchпропущено...


По вашему ORM не справится с 5-10 join'ами?Думаю что справится. Но это будет хардкод, в котором к тому же, надублируется изрядно функционал . Представления в базе используются многими.
Запросы не очень легкие для сервера, и возможности оптимизации уже исчерпаны. Как тут будет вести ORM?

Всмысле? Что именно надублируется? join идет через подзапросы. EF это умеет.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604604
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchWorobjoffпропущено...
Думаю что справится. Но это будет хардкод, в котором к тому же, надублируется изрядно функционал . Представления в базе используются многими.
Запросы не очень легкие для сервера, и возможности оптимизации уже исчерпаны. Как тут будет вести ORM?

Всмысле? Что именно надублируется? join идет через подзапросы. EF это умеет.В EF есть аналог SQL-представлений?
...
Рейтинг: 0 / 0
ORM vs sql
    #37604605
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaLelouchпропущено...

Сравните
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
var conection = new SqlConection("<conection string>");
var command = conection.CreateCommand();
command.CommantText = @"SELECT * FROM [TABLE] WHERE [DATE1] > @date1 AND [DATE2] = @date2"
command.Parameters.Add(new SqlParameter("@date1", DateTime.Now));
command.Parameters.Add(new SqlParameter("@date2", DateTime.Now));
var listOfResult = new List<Result>();
using(var reader = command.ExecuteReader)
{
	while(reader.Read())
	{
		var temp = new Result()
		{
			Field1 = (int)reader["field1"],
			Field2 = reader["field2"] as double?,
			<etc>
		};
		listOfResult.Add(temp);
	}
}


c

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
var context = new MyObjectContext();
var listOfResult = (from obj in context.Table
		   where obj.Date1 > DateTime.Now && obj.Date2 = DateTime.Now
		   select new Result()
		   {
			Field1 = obj.field1,
			Field2 = obj.field2,
			<etc>
		   }).ToList()


Во втором случае можно к тому же обойтись сгенерированным классом. или анонимным.

А что сравнивать? По скорости выполнения ef будет проигрывать минимум в десять раз. С кодогенератором получить готовый код будет не медленней. Это тривиальный случай, а для сложных, пока ты будешь бросать камушки в черный ящик, можно будет протестировать минумум три варианта на чистом sql и выбрать лучший.А я положу комбобокс на форму и в его свойстве запишу:
"SELECT * FROM [TABLE] WHERE [DATE1] > getdate() AND [DATE2] = getdate()"
И ни одной строчки программного кода.

Или настрою атрибут свойства доменного объекта. Тогда в комбобоксе будет только имя этого свойства.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604620
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люблю SQL, но в процессе составления запросов из строк, есть вероятность допустить ошибку, об этой ошибке я предпочитаю узнать во время компиляции а не во время исполнения.

зы
Склеенный из строк запрос - есть длинный "magic string".
...
Рейтинг: 0 / 0
ORM vs sql
    #37604623
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонЛюблю SQL, но в процессе составления запросов из строк, есть вероятность допустить ошибку, об этой ошибке я предпочитаю узнать во время компиляции а не во время исполнения.

А вы его, как все нормальные люди, тестируйте сначала под манажемент студией и смотрите при этом план запроса (желательно).
Тот факт, что компилятор не выдал ошибки, абсолютно не означает, что запрос правильный. :)
...
Рейтинг: 0 / 0
ORM vs sql
    #37604626
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffSeVaпропущено...


А что сравнивать? По скорости выполнения ef будет проигрывать минимум в десять раз. С кодогенератором получить готовый код будет не медленней. Это тривиальный случай, а для сложных, пока ты будешь бросать камушки в черный ящик, можно будет протестировать минумум три варианта на чистом sql и выбрать лучший.А я положу комбобокс на форму и в его свойстве запишу:
"SELECT * FROM [TABLE] WHERE [DATE1] > getdate() AND [DATE2] = getdate()"
И ни одной строчки программного кода

Это какой-то особый комбобокс или я что то не знаю про стандартные контролы?. А если мне нужно в качестве параметров не 2 текущих времени, а 2, выбираемых пользователем?
И еще, что, если мне не надо выполнять повторный запрос при повторном открытии формы?

P.S. WFP combobox + EF:
Код: c#
1.
combobox1.ItemsSource = from i in context.Table1 select i;


Кода как видите тоже немного.

L2S точно умеет использовать вьюхи в базе, так что я думаю что и EF на это способен.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604630
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffЭто - зарубежная ERP.
Да хоть отечественная. Какое это имеет отношение к вышесказанному?
SeVaМСУНачинать лучше с другого: Объекты и искусство моделирования данных
Mуся, я без этой статьи давно уже говорил, что ORM можно использовать только в качестве тупого DAL и что все они расчитаны на жирные графы объектов, которые совершенно неприспособлены для требований UI(разным use case нужны разные данные).
У тебя каша в голове.
WorobjoffДумаю что справится. Но это будет хардкод, в котором к тому же, надублируется изрядно функционал. Представления в базе используются многими.
Каким образом многие коррелируют с дата-слоем конкретного (-ых) приложения (-ий)?
WorobjoffЗапросы не очень легкие для сервера, и возможности оптимизации уже исчерпаны. Как тут будет вести ORM?
Религия запрещает использовать сторед объекты, намапленные на типизированный контекст?
WorobjoffВ EF есть аналог SQL-представлений?
EF - это не аналог БД. RTFM. Воробье, изучите тему, - Ваши высказывания отдают ламеризмом. Другими словами, мелете языком, вообще не понимая сути. Без обид.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604631
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffА я положу комбобокс на форму и в его свойстве запишу:
"SELECT * FROM [TABLE] WHERE [DATE1] > getdate() AND [DATE2] = getdate()"
Вот это называется жесткий хардкод. Прощай рефакторинг.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604633
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кстати EF озволяет сопоставлять сущности нескольким таблицам. http://msdn.microsoft.com/ru-ru/library/cc716698.aspx
...
Рейтинг: 0 / 0
ORM vs sql
    #37604651
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУWorobjoffЭто - зарубежная ERP.
Да хоть отечественная. Какое это имеет отношение к вышесказанному?
SeVaпропущено...

Mуся, я без этой статьи давно уже говорил, что ORM можно использовать только в качестве тупого DAL и что все они расчитаны на жирные графы объектов, которые совершенно неприспособлены для требований UI(разным use case нужны разные данные).
У тебя каша в голове.
WorobjoffДумаю что справится. Но это будет хардкод, в котором к тому же, надублируется изрядно функционал. Представления в базе используются многими.
Каким образом многие коррелируют с дата-слоем конкретного (-ых) приложения (-ий)?
WorobjoffЗапросы не очень легкие для сервера, и возможности оптимизации уже исчерпаны. Как тут будет вести ORM?
Религия запрещает использовать сторед объекты, намапленные на типизированный контекст?
WorobjoffВ EF есть аналог SQL-представлений?
EF - это не аналог БД. RTFM. Воробье, изучите тему, - Ваши высказывания отдают ламеризмом. Другими словами, мелете языком, вообще не понимая сути. Без обид.
Муся, у тебя торичелливая пустота в голове, только с ней ты мог дать ссылку на подобную статью, агитируя за ORM.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604656
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУWorobjoffА я положу комбобокс на форму и в его свойстве запишу:
"SELECT * FROM [TABLE] WHERE [DATE1] > getdate() AND [DATE2] = getdate()"
Вот это называется жесткий хардкод. Прощай рефакторинг.А запрос в LINQ - не хардкод. Ага.
Ты как скорпион в полемике - бьешь себя своим же хвостом.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604658
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУViPRosа что будет если я на стороне сервера просто убью пару табличек (которые нужны на клиенте и все красиво отмаппено и строго так типизировано) после всех потуг на стороне клиента?
А что если я сервер со всеми клиентами оболью бензином и подожгу? Твой "випрос" продолжит работу?

т.е. ты понимаешь, что твоя "строгая типизация" - МИФ?
А с ВИПРОС все проще.
Фиг кто сможет удалить таблицу, да хоть атрибут, если она использована хоть в одном методе ВИПРОС без соответствующих прав, а если права есть и эти действия могут привести к неработоспособности методов, то методы метятся как "неисполнимые" и менеджер методов просто не будет их вызывать, а сгенерирует ихзепшн.
т.е. метод выставляет контекстные требования к хранилищу, а менеджер метаданных пытается их удовлетварить. это я называю контрактом.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604828
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМуся, у тебя торичелливая пустота в голове, только с ней ты мог дать ссылку на подобную статью, агитируя за ORM.
Сева, у тебя смешение фантазии и действительности в разуме, дай ему отдохнуть - он помутнён. Только ты можешь юзкейсы сравнивать с далом.

WorobjoffМСУпропущено...
Вот это называется жесткий хардкод. Прощай рефакторинг.А запрос в LINQ - не хардкод. Ага.
Ты как скорпион в полемике - бьешь себя своим же хвостом.
Видимо у Вас представление о хардкоде несколько иное. Именно Ваш magic string и есть хардкод. Про рефакторинг комментарии будут? Вот тут всё сказано: 11866713
Изменится поле, как рефакторить будете по всему проекту?

ViPRosт.е. ты понимаешь, что твоя "строгая типизация" - МИФ?
В чем миф, отец? :)
...
Рейтинг: 0 / 0
ORM vs sql
    #37604844
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosэто я называю контрактом.
Это не контракт, это банальная обработка исключения. Я тоже так умею
...
Рейтинг: 0 / 0
ORM vs sql
    #37604845
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffТы как скорпион в полемике - бьешь себя своим же хвостом.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT 
    p.Description,
    s.Name,
    (SELECT COUNT(*) FROM PurchaseItem pi WHERE p.ID = pi.PurchaseID) PurchaseItemCount	
FROM Purchase p
    LEFT OUTER JOIN 
        Customer c 
            INNER JOIN Address a ON c.AddressID = a.ID
            LEFT OUTER JOIN SalesPerson s ON c.SalesPersonID = s.ID
    ON p.CustomerID = c.ID	
WHERE
    (a.State = 'WA' OR p.CustomerID IS NULL)
    AND p.ID in
    (
        SELECT PurchaseID FROM PurchaseItem
        GROUP BY PurchaseID HAVING SUM (SaleAmount) > 1000
    )
ORDER BY
    (SELECT SUM (SaleAmount) FROM PurchaseItem pi WHERE p.ID = pi.PurchaseID) DESC



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
from p in db.Purchases
where p.Customer.Address.State == "WA" || p.Customer == null
let purchaseValue = p.PurchaseItems.Sum (pi => pi.SaleAmount)
where purchaseValue > 1000
orderby purchaseValue descending
select new
{
   p.Description,
   p.Customer.SalesPerson.Name,
   PurchaseItemCount = p.PurchaseItems.Count()
}



Что скажешь, скорпион? :) Во-вторых, у меня на этапе компиляции будет известно об ошибке, в отличие от хардкодного сиквел-запроса.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604857
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУWorobjoffТы как скорпион в полемике - бьешь себя своим же хвостом.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT 
    p.Description,
    s.Name,
    (SELECT COUNT(*) FROM PurchaseItem pi WHERE p.ID = pi.PurchaseID) PurchaseItemCount	
FROM Purchase p
    LEFT OUTER JOIN 
        Customer c 
            INNER JOIN Address a ON c.AddressID = a.ID
            LEFT OUTER JOIN SalesPerson s ON c.SalesPersonID = s.ID
    ON p.CustomerID = c.ID	
WHERE
    (a.State = 'WA' OR p.CustomerID IS NULL)
    AND p.ID in
    (
        SELECT PurchaseID FROM PurchaseItem
        GROUP BY PurchaseID HAVING SUM (SaleAmount) > 1000
    )
ORDER BY
    (SELECT SUM (SaleAmount) FROM PurchaseItem pi WHERE p.ID = pi.PurchaseID) DESC



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
from p in db.Purchases
where p.Customer.Address.State == "WA" || p.Customer == null
let purchaseValue = p.PurchaseItems.Sum (pi => pi.SaleAmount)
where purchaseValue > 1000
orderby purchaseValue descending
select new
{
   p.Description,
   p.Customer.SalesPerson.Name,
   PurchaseItemCount = p.PurchaseItems.Count()
}

Даже мысли не допускаю эту порнографию хардкодить.
МСУ, ты сам за других додумываешь, и сам этим своим додумкам отвечаешь на этом сайте.
Сам с собой так.
...
Рейтинг: 0 / 0
ORM vs sql
    #37604858
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Math.Pi-r, оставь свои пионерские статейки при себе. Кроме table ты ничего не видел
...
Рейтинг: 0 / 0
ORM vs sql
    #37604861
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУWorobjoffТы как скорпион в полемике - бьешь себя своим же хвостом.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT 
    p.Description,
    s.Name,
    (SELECT COUNT(*) FROM PurchaseItem pi WHERE p.ID = pi.PurchaseID) PurchaseItemCount	
FROM Purchase p
    LEFT OUTER JOIN 
        Customer c 
            INNER JOIN Address a ON c.AddressID = a.ID
            LEFT OUTER JOIN SalesPerson s ON c.SalesPersonID = s.ID
    ON p.CustomerID = c.ID	
WHERE
    (a.State = 'WA' OR p.CustomerID IS NULL)
    AND p.ID in
    (
        SELECT PurchaseID FROM PurchaseItem
        GROUP BY PurchaseID HAVING SUM (SaleAmount) > 1000
    )
ORDER BY
    (SELECT SUM (SaleAmount) FROM PurchaseItem pi WHERE p.ID = pi.PurchaseID) DESC



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
from p in db.Purchases
where p.Customer.Address.State == "WA" || p.Customer == null
let purchaseValue = p.PurchaseItems.Sum (pi => pi.SaleAmount)
where purchaseValue > 1000
orderby purchaseValue descending
select new
{
   p.Description,
   p.Customer.SalesPerson.Name,
   PurchaseItemCount = p.PurchaseItems.Count()
}



Что скажешь, скорпион? :) Во-вторых, у меня на этапе компиляции будет известно об ошибке, в отличие от хардкодного сиквел-запроса.

За такие запросы нужно голову откручивать. В твоем случае - задницу
...
Рейтинг: 0 / 0
25 сообщений из 451, страница 5 из 19
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ORM vs sql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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