powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Связь один к одному EF Code First
25 сообщений из 357, страница 7 из 15
Связь один к одному EF Code First
    #38799572
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, Сахават, по твоей логике выходит, что ты сам больной человек. А учитывая, что скоро на пенсию, то сильно больной, нежели я :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799577
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAУ тебя никаких паталогий не наблюдается?

Не поленился и нашёл: 16780441

А ответ мой не забыл почитать? Я дал ответ, доп. вопросов не последовало. Но тут вмешался ты

skyANAСпециально выделил тебе вопрос почему, заданный тебе на счёт Include.

Ну теперь-то объяснишь свою позицию? Только давай нормально, а не плохо, потому что я уже три раза сказал, что плохо.

Позиция простая, уже в 2-х словах: «Include — плохо».

Почему плохо?

1. Include это EF-specific, зависимость от сборки с EF — самый основной минус в «карму»
2. Include в абсолютном большинстве случаев создаёт SQL-запрос с сильно избыточным результатом
3. Include не позволяет указать ограничения (примеры: по доступу, по маркеру «удалён», по другим хар-кам)
4. Include приходится указывать для каждого свойства, которое требуется подгрузить, а их может быть много, если загружаемые объекты имеют ещё вложенные свойства, их тоже требуется указывать, таким образом летит к чертям концепция «загрузки графа объекта», кроме того снижается «порог чувствительности» того, что мы работаем с реляционной БД, а это может сильно ударить (и обязательно не раз ударит) по темечку
5. В противовес Include -- если объект был загружен в сессии контекста, то обращение к навигационному свойству не вызовет обращение к базе данных. Пример:

Код: c#
1.
2.
3.
4.
5.
6.
7.
var o = Context.Carts.Where(p => p.Id = someId).Select(p => new { Cart = p, Person = p.Person }).Single();

var cart = o.Cart;

// получаем Person

var person = cart.Person; // здесь уже НЕ будет дополнительного обращения к базе данных, так как Person уже получен



Соответственно, накуй этот костыль Include не нужен. Забыть навсегда и никогда не вспоминать.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799578
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

я тебя специально поддел, что бы ты понял, что пора перестать обзывать других глупцами
видишь как больно?
из за того что тебе непонятно по каким то причинам речь другого, не надо обзываться, просто пропусти мимо и все :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799579
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу не строй из себя дурака. Мои замечания к тебе относились не к EF, а к тому, что ты совсем не то, что надо ТСу предлагаешь.

Так ты личный представитель ТС я не понял? ТС вопросов не задаёт, а задаёшь их ты, значит это надо тебе, а не ему. Вообще никто не знает, зайдёт ли ТС ещё когда-нибудь в этот тред, так что не надо строить из себя помогающую ТС-у мать Терезу
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799581
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в не пью, не дую и т.д. и мне правда до пенсии 2 года (не дождетесь конечно :)) потому полече воще то
если пишу непонятно но это интересно тебе то попробуй разобраться, а не интересно так мимо и все
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799583
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТС вопросов не задаёт, а задаёшь их ты, значит это надо тебе, а не ему.не-не, вопрос-то задал я и с удовольствием и познаванием слежу за топиком
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799585
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

а почему бы Include не вынести за скобки?
типа загрузить по всем навигационным?

почему скл избыточен?
по идее include должна возвращать несколько резульсетов или она генерирует лефт джойны и потом парсить в памяти?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799586
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа почему бы Include не вынести за скобки?
типа загрузить по всем навигационным?

Нет такого способа.

ViPRosпочему скл избыточен?

Избыточен не SQL, а результат.

ViPRosпо идее include должна возвращать несколько резульсетов или она генерирует лефт джойны и потом парсить в памяти?

Именно
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799587
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

я тебя специально поддел, что бы ты понял, что пора перестать обзывать других глупцами
видишь как больно?Совсем не больно. Но спасибо, что ты признал то, что глупости написал.

ViPRosиз за того что тебе непонятно по каким то причинам речь другого, не надо обзываться, просто пропусти мимо и все :)Мне было не понятно то, почему ТСу, кто хочет "жадно" загрузить объект, предлагаются какие-то проекции. Я это озвучил.

Что тебя тут смущает?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799589
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProhVosttТС вопросов не задаёт, а задаёшь их ты, значит это надо тебе, а не ему.не-не, вопрос-то задал я и с удовольствием и познаванием слежу за топиком Вот! Не зря значит я тут докапываюсь до сути :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799593
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

инклюд в еф (со слов хвоста) строить лефт джойн - что не есть хорошо и воще ооочень плохо, так как при этом низзя загрузить даже дерево, не то что б граф

кроме того нет способа сразу задать инклюд для всего графа

потому инклюд в еф - говно
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799594
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в твоем монго (с твоих слов и по твоему прмеру) нет никакого графа объектов, а есть вложенная разметка
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799596
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а Хвост не ответил на мой вопрос про Лейзи и Кеш (как лейзи работает с кешем)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799598
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМне было не понятно то, почему ТСу, кто хочет "жадно" загрузить объект, предлагаются какие-то проекции. Я это озвучил.

Что тебя тут смущает?

Ты глубже посмотреть не пробовал? Предлагаются не «какие-то проекции», а более эффективный способ работать с данными.

Нужно же понимать, что пример с Cart.Person очень ограниченный, в реале объекты гораздо больше и схема сложнее. Поэтому Include и «жадные» загрузки неизбежно приведут к проблемам. Я человека пытаюсь оградить от этого, а ты непонятно чего хочешь. Типа говорят человеку, что для постройки дома нужны чертежи, ты же опираясь на пример с будкой, впариваешь, что чертежи ненужны, сойдёт и так.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799600
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosа Хвост не ответил на мой вопрос про Лейзи и Кеш (как лейзи работает с кешем)

Работает кеш. Если в сессии объект был загружен, он не будет загружаться ещё раз.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799601
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

значит лейзи запросто можно обмануть?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799602
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosинклюд в еф (со слов хвоста) строить лефт джойн - что не есть хорошо и воще ооочень плохо, так как при этом низзя загрузить даже дерево, не то что б граф

кроме того нет способа сразу задать инклюд для всего графа

потому инклюд в еф - говно

Именно об этом и речь
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799603
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПозиция простая, уже в 2-х словах: «Include — плохо».

Почему плохо?

1. Include это EF-specific, зависимость от сборки с EF — самый основной минус в «карму»ТС писал на форуме о том, что знает SQL и ADO.NET, и в данный момент изучает именно специфику EF.

hVostt2. Include в абсолютном большинстве случаев создаёт SQL-запрос с сильно избыточным результатомА данный конкретный случай иллюстрирует, что результат именно тот, что нужен ТСу.

hVostt3. Include не позволяет указать ограничения (примеры: по доступу, по маркеру «удалён», по другим хар-кам)А этого и не требуется.

hVostt4. Include приходится указывать для каждого свойства, которое требуется подгрузить, а их может быть много, если загружаемые объекты имеют ещё вложенные свойства, их тоже требуется указывать, таким образом летит к чертям концепция «загрузки графа объекта», кроме того снижается «порог чувствительности» того, что мы работаем с реляционной БД, а это может сильно ударить (и обязательно не раз ударит) по темечкуЭто всё понятно, но опять-таки описанная ситуация не относится к задаче ТСа.

hVostt5. В противовес Include -- если объект был загружен в сессии контекста, то обращение к навигационному свойству не вызовет обращение к базе данных. Пример:

Код: c#
1.
2.
3.
4.
5.
6.
7.
var o = Context.Carts.Where(p => p.Id = someId).Select(p => new { Cart = p, Person = p.Person }).Single();

var cart = o.Cart;

// получаем Person

var person = cart.Person; // здесь уже НЕ будет дополнительного обращения к базе данных, так как Person уже получен

В случа с Include() "дополнительного обращения к базе" тоже не будет. Причём мы явно это знаем.

hVosttСоответственно, накуй этот костыль Include не нужен. Забыть навсегда и никогда не вспоминать.Не согласен. Для задачи ТС Include() прекрасно подходит.

А что, в EF нет другого способа "жадной загрузки"? В статье только Include() упоминается.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799604
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. полагаемся только на стратегию кеширования
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799605
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

значит лейзи запросто можно обмануть?

Да, пример выше я привёл. Ну только это не обман, а нормальное поведение.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799606
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе согласен. Для задачи ТС Include() прекрасно подходит.

Для какой задачи? Ты УВЕРЕН что знаешь задачу ТС? Он привёл один маленький примерчик. Думаешь это и есть задача? Ахааххаах... это... довольно мило, если ты так считаешь
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799608
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

"жадная" в математике определено, потому скорее это "полная"
воще то я считаю что ОРМ только и нужен для того что бы одним махом загрузить объект или его проекции
при этом хорошо бы иметь и лейзи

получается что в ЕФ нет ни того, ни другого :(
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799610
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНе согласен. Для задачи ТС Include() прекрасно подходит.

Для какой задачи? Ты УВЕРЕН что знаешь задачу ТС? Он привёл один маленький примерчик. Думаешь это и есть задача? Ахааххаах... это... довольно мило, если ты так считаешь
это они тут мальчиком взяли за правило - "к пуговицам претензии есть??", я не зря Райкина (будь он неладен) вспоминал :)
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799612
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТС писал на форуме о том, что знает SQL и ADO.NET, и в данный момент изучает именно специфику EF.

Ты мой пункт 1. вооооообще не понял. Доступ к данным обычно инкапсулируется в отдельный слой, там же живёт EF. Кто работает со слоем данных знать не знают никаких Include.


skyANAА что, в EF нет другого способа "жадной загрузки"? В статье только Include() упоминается.

Есть. Load. Тоже EF-specific, и ещё хуже чем Include. Позволяет работать с навигационными свойствами без модификатора virtual .
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38799614
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

ты вот теперь представляешь почему у ЕФ такие проблемы? (хотя бы то что низзя инклюд вывести за скобки)
...
Рейтинг: 0 / 0
25 сообщений из 357, страница 7 из 15
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Связь один к одному EF Code First
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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