|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
То ли задачка то ли оказалась нетривиальной, то ли я где-то сильно затупил. Вот запрос на SQL Код: sql 1. 2. 3. 4. 5.
У покупателя может не быть заказов, либо у заказов может не быть товаров, в этом случае я должен получить только поля покупателя и NULL для полей заказа и товара. При попытке написать на Linq2EF я либо получаю NullReferrenceException при попытке второго джойна (так как нет объекта, из которого надо достать id), либо отбор несколькими запросами, при этом внутренних таблиц не производится фильтрация в БД, то есть на клиента приходят все заказы и все товары и только потом фильтруются. В общем, как написать этот запрос для EF? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 11:34 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Pro, покажи пример, что пишешь ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 12:46 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Сначала замутил что-то такое: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Потом такое: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 13:26 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
в первом накосячил, когда пример делал: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 14:01 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Pro, а чё, нету навигационных полей, типа customer.Order? если есть, решается ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 16:31 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
похоже на то, что запрос материализуется сразу, а не транслируется в SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 16:33 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVosttа чё, нету навигационных полей, типа customer.Order? если есть, решаетсяПоля есть (не customer.Order, а customer.Orders разумеется), но с ними совсем не взлетает. Гуглил, как я понял проблема сгенерить проекцию с нормальными джойнами, не получив N+1 запросов к базе, не решена (точнее решена в каком-то очень частном случае и только с одним уровнем джойна). Может ты подскажешь как? hVosttпохоже на то, что запрос материализуется сразу, а не транслируется в SQLНет, в первом случае я получаю ровно один запрос к базе. Во втором N-1 (по количеству вложенных уровней), что тоже устраивало бы, только нижние уровне не фильтруются на уровне запроса к БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 16:39 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Code First, EF Core ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 16:40 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProCode First, EF Core А, Core... понятно. Именно EF он ещё очень сырой, при чём настолько, что практически неюзабельно. Половина проекций не работает, группировка? давай досвидания... Миграции, как повезёт вообще, да и не работают толком как в EF 6. Только SELECT N+1, советовал бы уйти на другой провайдер, в версии EF Core от него пользы как от козла молока. Ещё годик другой может. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 16:43 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProУ покупателя может не быть заказов, либо у заказов может не быть товаров, в этом случае я должен получить только поля покупателя и NULL для полей заказа и товара.нет логики в запросе. Как заказ без товаров? Покажи тест запроса на базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 16:56 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVostt, Проверить, core виноват или нет, не долго. В демке на ef6. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:04 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProУ покупателя может не быть заказов, либо у заказов может не быть товаров, в этом случае я должен получить только поля покупателя и NULL для полей заказа и товара. Либо запрос к товарам а не к покупателям. Либо запрос к покупателям с агрегацией и сведением количества заказов. Imho ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:09 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro123нет логики в запросе.не ищи логику, это пример, а не рабочий код, хочешь - в зайцев перепиши. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:25 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProPetro123нет логики в запросе.не ищи логику, это пример, а не рабочий код, хочешь - в зайцев перепиши. А что ее искать, если запрос не к той сущности. Запрос должен быть логичен, а не джойнить все подряд. Логично? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:29 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVosttА, Core... понятно. Именно EF он ещё очень сырой, при чём настолько, что практически неюзабельно. Половина проекций не работает, группировка? давай досвидания... Миграции, как повезёт вообще, да и не работают толком как в EF 6.Ну интересно, они что, с нуля его писали? Я полагал, большинство кода взято все-таки с EF6. Ну и не могу же я юзать EF6 под ASP.NET Core. Опять же - задача-то абсолютно тривиальная - два Left Joina. Ну а как это решается в EF6? hVosttсоветовал бы уйти на другой провайдер, в версии EF Core от него пользы как от козла молока. Ещё годик другой может.вот это не совсем понял ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:29 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro123А что ее искать, если запрос не к той сущности. Запрос должен быть логичен, а не джойнить все подряд. Логично?Не логично, я не буду тратить время, расписывая тебе реальную бизнес-модель полдня. Есть конкретная выборка, которую я хочу получить - два вложенных отношения один-ко-многим, названия сущностей можешь свои подставить, если тебя коробит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:32 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Proдва вложенных отношения один-ко-многим, Сторону Многие сворачиваем через count? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:37 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Pro, Список чего тебя интересует? Товаров? Заказов? Клиентов? Может Много ко Много отношения? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:40 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro123Сторону Многие сворачиваем через count?Да блин, ничего не сворачиваем, я же пример написал на SQL - ты видишь там Count? В итоге мне нужно загрузить иерархическую модель в дерево. Я конечно могу написать это ручками тремя запросами послойно, если нет другого выхода, но странно, если его нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:42 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Proя же пример написал на SQL -я просил тест к базе и 5 строк результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:44 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProДа блин, ничего не сворачиваем, я Блин! )))) Если не сворачивать, то запрос к отношению Много! Т.е. from Заказы! Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:47 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Ну или Right, outer, left, ....чообы null появились. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:50 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro123Т.е. from Заказы!Какая разница между FROM Заказы RIGHT JOIN Покупатели и FROM Покупатели LEFT JOIN Заказы Если тебе не нравится LEFT JOIN перепиши на RIGHT JOIN - суть не поменяется Базовая таблица - Покупатели в данном случае ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:51 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProБазовая таблица - Покупатели в данном случае Дело твоё. Возможно парсер линка не такой крутой как парсер субд. Чтобы понимать что такое базовая таблица. Я бы сделал тест в базе. Потом на ef6. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2018, 17:58 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro123hVostt, Проверить, core виноват или нет, не долго. В демке на ef6. Чё проверять, я знаю, что представленный код шокером, работает на EF6, без каких-то проблем. Мы пытались заюзать EF Core для небольшого проекта и встретили такую гору проблем, что решили, что пока как-нибудь без него. Взяли даппер. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2018, 07:59 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProНу интересно, они что, с нуля его писали? Я полагал, большинство кода взято все-таки с EF6. Ну и не могу же я юзать EF6 под ASP.NET Core. Опять же - задача-то абсолютно тривиальная - два Left Joina. Ну а как это решается в EF6? Да, пишут с нуля. Потому что решили покрыть не только реляционку, но и NoSQL тоже. И архитектуру внутри решили поменять в корне. Отсюда все грабли :) Shocker.Proвот это не совсем понял https://github.com/ServiceStack/ServiceStack.OrmLite Поддерживает Core в полный рост, умеет то, что ты хочешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2018, 08:01 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVosttя знаю, что представленный коду кода выше не буде null в ответах т.к. left join. Это меня смущает. А про core звоночки что сырой действительно слышал. Просто проверять то 3 мин.времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2018, 08:40 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVostt https://github.com/ServiceStack/ServiceStack.OrmLite Поддерживает Core в полный рост, умеет то, что ты хочешь.Спасибо. То есть ты имел ввиду - заменить сам ОРМ (меня смутило слово провайдер). Но сейчас так просто прыгнуть не получится, нужно будет переписывать репозиторий, в котором много чего. С EF на Core переделок было минимально, на вот на другой ОРМ перейти щас нет времени. А что там с миграциями у вас было, не помнишь? Пока тьфу-тьфу, не споткнулся. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2018, 11:09 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProА что там с миграциями у вас было, не помнишь? Пока тьфу-тьфу, не споткнулся У миграций могут быть проблемы с поддержкой провайдеров. Сложные миграции, типа переименования, изменения связей могут ломаться. Обычные, типа создать таблицу, колонку, работают в принципе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2018, 14:36 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProНо сейчас так просто прыгнуть не получится, нужно будет переписывать репозиторий, в котором много чего. С EF на Core переделок было минимально, на вот на другой ОРМ перейти щас нет времени. Тогда придётся пока костыли впихивать :) Там, где нужны сложные запросы, обходиться либо SELECT N+1, либо писать на чистом SQL и маппить в DTO классы, это он умеет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2018, 14:37 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Прочитал счас что linq не поддерживает outer join ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2018, 15:02 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro123Прочитал счас что linq не поддерживает outer join ))) Никогда не поддерживал. Ни сейчас, ни когда-то там. И не планируется. Решается через группировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2018, 15:22 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro123Прочитал счас что linq не поддерживает outer join )))Может тебе сначала стоит литературку там почитать, учебники, опыт какой-никакой приобрести, а потом уже консультировать на форуме? А то в каждом топике затычка, а толку в каждом из них - ноль. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2018, 15:46 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Pro, Ну дак я учусь. А ты такой злой потому что запрос не работает? Решение нашел? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2018, 15:51 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVosttДа, пишут с нуля. Потому что решили покрыть не только реляционку, но и NoSQL тоже. И архитектуру внутри решили поменять в корне. Отсюда все грабли :)Ну в общем, спасибо, что обратил моё внимание на это, я-то исходил, что в EF Core может быть только больше функционала, но никак не меньше, соответственно, были неверные посылы. Сейчас появилось немного времени, поковырялся уже с новой точкой зрения и откопал две вещи: 1) В EF Core нет ленивой загрузки (!) 2) При применении ThenInclude есть косяк в VS - неверно работает Intellisense, соответственно, это меня тоже сбило с толкуCurrent versions of Visual Studio offer incorrect code completion options and can cause correct expressions to be flagged with syntax errors when using the ThenInclude method after a collection navigation property. This is a symptom of an IntelliSense bug tracked at https://github.com/dotnet/roslyn/issues/8237. It is safe to ignore these spurious syntax errors as long as the code is correct and can be compiled successfully. В итоге можно просто написать через навигационные свойства Код: c# 1. 2. 3. 4.
Все равно через ж, потому что проекция не работает, точнее сгенерит N*M+1 запрос, но хотя бы можно материализовать и потом спроецировать. Запрос к БД при этом тоже интересно, получается три запроса - Customers Orders Inner Join Customers Goods InnerJoin Orders Inner Join Customers И фильтр пробрасывается во все три запроса, в результате получается-таки LEFT JOIN. Ну это хотя бы не N*M+1 запрос. И группировка не работает. Да, полное овно. Я офигел, честно говоря. Был же продукт. Ну пилили бы другой с другим названием с нуля, зачем ломать старый-то, революционеры хреновы. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2018, 22:23 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVostt https://github.com/ServiceStack/ServiceStack.OrmLite Поддерживает Core в полный рост, умеет то, что ты хочешь.Посмотрел овервью, да, похоже вещь сделана для людей и руками, а не жо-ой. Даже есть SelectFilter на таблицу, то что я руками пилил в своем RepositoryBase поверх EF. Ты вообще с этой штукой работал, понравилось? И я правильно понял: 1) Аналога трекера там нет, то есть встроить дополнительную модификацию объектов перед общим сбросом в БД не получится? 2) Про автоматическое изменение схемы БД тоже ничего толком не нашел - все миграции ручками? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2018, 22:30 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProТы вообще с этой штукой работал, понравилось? Использовал в проектах, где требовался полный контроль над СУБД и LINQ, понравилось :) Shocker.Pro1) Аналога трекера там нет, то есть встроить дополнительную модификацию объектов перед общим сбросом в БД не получится? Нет, здесь смысл в том, что ты сам формируешь изменения, при необходимости групповые (чего нет в EF по факту и не может быть). По поводу трекинга вопрос, конечно в определённых случаях трекинг отличное решение, но по опыту, на перспективу не очень. При развитии проекта трекинг больше мешает, чем помогает. Хотя никто не мешает сделать его там, где это необходимо с помощью DynamicProxy / Observable, или вообще через Event Sourcing. Shocker.Pro2) Про автоматическое изменение схемы БД тоже ничего толком не нашел - все миграции ручками? Ну не совсем прям ручками. Во-первых, https://www.codeproject.com/Articles/1197504/How-to-use-code-first-and-data-migration-with-Serv Во-вторых, это редкий случай, когда ORM содержит поддержку DDL, так что можно абстрагироваться от СУБД и писать миграции на более высоком уровне. В общем, тут целиком зависит от задач и от личных предпочтений в работе с данными. С учётом того, что на Core вменяемого решения ещё ждать минимум пару лет, стоит задуматься о других решениях. По крайне мере в OrmLite есть поддержка LINQ, DDL и достаточный уровень абстракции, чтобы задействовать типизацию и при этом иметь контроль над данными. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2018, 22:53 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Pro1) В EF Core нет ленивой загрузки (!) Это вообще жесть, один из основных причин, держать его пока подальше от продакшена. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2018, 22:55 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProЯ офигел, честно говоря. Был же продукт. Ну пилили бы другой с другим названием с нуля, зачем ломать старый-то, революционеры хреновы. Ну чё, нашли фатальный недостаток, нормально :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2018, 22:56 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2018, 23:00 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVosttВо-вторых, это редкий случай, когда ORM содержит поддержку DDL, так что можно абстрагироваться от СУБД и писать миграции на более высоком уровне.А можешь пояснить? Тут не догнал. hVosttНу чё, нашли фатальный недостаток, нормально :)Да ну, тут ты гонишь - его же они сами и писали ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2018, 23:25 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProhVosttВо-вторых, это редкий случай, когда ORM содержит поддержку DDL, так что можно абстрагироваться от СУБД и писать миграции на более высоком уровне.А можешь пояснить? Тут не догнал. Ну вот же Код: c# 1.
оформляешь в миграции, и хранишь как тебе надо, мне кстати нравится как это сделано в EF6 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2018, 23:37 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
А данные? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2018, 23:50 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProА данные? Ну Create/Update... )) Ты же про посев? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 07:46 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Pro, Не придираясь, исключительно для уточнения наезда на Core: 1) как решил что ленивая не работает? 2) базовую таблицу from не пробовал сменить? 3) запросы сразу к трем таблицам Много ко Много вполне могут допилить позже. Они не каждодневные и больше не к ОРМ идут а к отчетникам и аналитикам. Imho ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 08:42 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
В тему, смена синтаксиса при переходе на Core с EF6. https://stackoverflow.com/questions/40319251/using-ef-core-theninclude-on-junction-tables ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 09:12 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVosttShocker.ProА данные? Ну Create/Update... )) Ты же про посев?Я вообще про апгрейды, развертывание в том числе. Если в EF я просто занимаюсь разработкой могу несколько раз поменять модель и когда пришло время, миграция сгенерилась автоматически, то тут я должен менять модель и сам ручками параллельно делать как миграцию (следя за тем, чтобы она оставалась синхронной с моделью), так и поддерживать версионность схемы БД, если я не работаю напрямую с продакшен базой, а предполагаю, что схема должна обновляться у клиента в автоматическом режиме. Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 09:33 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro1231) как решил что ленивая не работает? https://docs.microsoft.com/en-us/ef/core/querying/related-data Petro1232) базовую таблицу from не пробовал сменить?? Petro1233) запросы сразу к трем таблицам Много ко Много вполне могут допилить позже. Это мне пока не требовалось от Core, с другой стороны, я и не использовал М:М возможности и в EF.NET, создавал таблицу связок вручную.Petro123Они не каждодневные и больше не к ОРМ идут а к отчетникам и аналитикам.Теоретик, блин ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 09:39 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProPetro1232) базовую таблицу from не пробовал сменить?? Много ко многим: покупатели <--> товары Так? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 09:55 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProЕсли в EF я просто занимаюсь разработкой могу несколько раз поменять модель и когда пришло время, миграция сгенерилась автоматически, то тут я должен менять модель и сам ручками параллельно делать как миграцию (следя за тем, чтобы она оставалась синхронной с моделью), так и поддерживать версионность схемы БД, если я не работаю напрямую с продакшен базой, а предполагаю, что схема должна обновляться у клиента в автоматическом режиме. Так? Всё верно. Все миграции писать ручками, завести служебную таблицу миграций (чтобы поддерживать схему БД), написать механизм миграций. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 09:58 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProPetro123Они не каждодневные и больше не к ОРМ идут а к отчетникам и аналитикам.Теоретик, блиня сказал общеизвестную вещь....и не обиделся на ответ). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 09:58 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro123Shocker.Proпропущено... ? Много ко многим: покупатели <--> товары Так? Идем далее логически. Много ко многим решается через промежуточную таблицу. Третью. Если текст запроса такой: "Дай мне все заказы с тем то тем то", то базовая (твой термин) таблица это from заказы. Т.е. если результать больше чем строк в Покупатели, то from не на покупателя. Похожий твой случай? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 10:47 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProЭто мне пока не требовалось от Core, с другой стороны, я и не использовал М:М возможности и в EF.NET, создавал таблицу связок вручную. Может в этом все дело. В ручном подходе. Либо подход DbFirst(как я предпочитаю). Либо CodeFirst и смотреть что там MS в базе нагенерил. Что то посередине и руками, ...я бы не. Зы. Ссылку посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 11:25 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVosttВсё верно. Все миграции писать ручками, завести служебную таблицу миграций (чтобы поддерживать схему БД), написать механизм миграций.А где смайлик? А есть какая-нить ОРМ, которая поддерживает автоматическую генерацию миграций, помимо EF? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 12:28 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro123, Все твои сообщения говорят о том, что дальше Hello World с БД, SQL и данными тебе работать не приходилось, так что извини, отвечать на тво бредовые вопросы желания никакого нет. Если ты хотя бы примеры кода приводил, я бы мог указать на твои ошибки, но ты занимаешься просто бла-бла. Было бы пофиг, если бы ты свои флудом не занимал бы больше половины топика, забивая нормальный диалог. Поэтому постарайся просто помолчать, если уж совсем не терпится, напиши код, проверь его, тогда уже можно будет о чем-то говорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 12:34 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Pro, Опять бла бла бла. Твой подход, это linq, а не ОРМ по твоим словам: авторя и не использовал М:М возможности и в EF.NET, создавал таблицу связок вручную. Не хочешь развиваться, твое право. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 12:49 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProhVosttВсё верно. Все миграции писать ручками, завести служебную таблицу миграций (чтобы поддерживать схему БД), написать механизм миграций.А где смайлик? А есть какая-нить ОРМ, которая поддерживает автоматическую генерацию миграций, помимо EF? Зачем смайлик? :) В текущей системе у нас миграции не просто автоматические, они полностью динамические, таблицы, связи, констрейты, индексы создаются на лету во время исполнения программы, аналитик описывает модели на DDL прям в приложении, это отражается в БД. Мы систему runtime-миграции написали сами, на EF мы бы ничего подобного даже близко не сделали никогда. Поэтому, я серьёзно. Собственные миграции, это айс :) В общем, смотри сам. Попробуй пожить с EF :) Может сможешь как-то закостылить узкие места до лучших времён. У нас есть маленький проектик на EF Core, ничо, живёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 19:22 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVosttаналитик описывает модели на DDL *DML ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 19:22 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Ну динамика - это отдельная песня, то понятно. Но в статике-то хотелось больше сервиса, иначе полностью теряется преимущество CodeFirst и проще использовать DBFirst, чтобы не писать два раза одно и то же. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 19:51 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.ProНу динамика - это отдельная песня, то понятно. Но в статике-то хотелось больше сервиса, иначе полностью теряется преимущество CodeFirst и проще использовать DBFirst, чтобы не писать два раза одно и то же. Я к тому, что авто-миграции, это конечно хорошо. Но чтоб от них действительно был прям офигенский профит, это надо каждый день вносить кучу изменений или фрилансить на студентов, ну или я не знаю что ещё. Обычно изменения модели не такие частые, чтобы это прям было таким камнем. Да, удобно, но не более. За день-два можно написать неплохой механизм миграций для своего проекта. Ну и допиливать его по мере необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 20:27 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Proи проще использовать DBFirst, чтобы не писать два раза одно и то же. Ну, возможно... Я уже сто лет как не разрабатываю ПО через БД, это фигня какая-то )) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 20:29 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
hVosttчерез БД, это фигня какая-то ))а аналитики пишут (РИСУЮТ) Модель в DDL.))) Неувязочкасс)). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 22:32 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Petro123hVosttчерез БД, это фигня какая-то ))а аналитики пишут (РИСУЮТ) Модель в DDL.))) Неувязочкасс)).Мальчик-писатель-не-читатель! угомонись уже ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 22:50 |
|
EF: Как грамотно написать на LINQ запрос для EF с двумя или более LEFT JOIN
|
|||
---|---|---|---|
#18+
Shocker.Pro, Тебя плохо воспитывали? К другим приставать? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2018, 23:13 |
|
|
start [/forum/topic.php?all=1&fid=17&tid=1349207]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
others: | 260ms |
total: | 433ms |
0 / 0 |