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

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

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

При чём тут вообще выбор ORM? Проекции за ORM-ом, а не способ работы с ним. В SQL, например, именно так и работают: пишут SELECT <набор нужных полей из одной или нескольких таблиц или подзапросов> -- скажешь «плохой SQL, может стоит попробовать другой язык запросов?»?

Странный ты человек однако. Что-то сказать видимо хочешь, а что хрен проссышь.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801487
viton-zizu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с трудом я это все перечитал...) Уже и боюсь что-то ещё спрашивать)
А по факту получилось куча методов
Код: c#
1.
2.
3.
4.
GetById(Id);
GetByName(name);
GetByNameAndId();
//...etc


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

При чём тут вообще выбор ORM? Проекции за ORM-ом, а не способ работы с ним. В SQL, например, именно так и работают: пишут SELECT <набор нужных полей из одной или нескольких таблиц или подзапросов> -- скажешь «плохой SQL, может стоит попробовать другой язык запросов?»?

Странный ты человек однако. Что-то сказать видимо хочешь, а что хрен проссышь.А может и скажу :)

В MongoDB тоже есть проекции, но! MongoDB документо-ориентированная, в ней полностью документ по ключу выбирается очень быстро и никто не будет заморачиваться насчет проекций, как средства повышения производительности.

MongoDB придумывался для web, и отлично подходит для этого. Поэтому почему не попробовать ее в каком-нибудь поекте?
Там есть свой язык запрсов :)

Но это так, лирическое отступление.

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

Известно, что ASM уделывает C#, Java и практически всё остальное по скорости.
И чо?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801644
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viton-zizuс трудом я это все перечитал...) Уже и боюсь что-то ещё спрашивать)
А по факту получилось куча методов
Код: c#
1.
2.
3.
4.
GetById(Id);
GetByName(name);
GetByNameAndId();
//...etc


Но из того что вы описывали в теме, как сделать по другому так и не понял)))И не поймёте, пока грамотно вопрос не зададите :)

Александр Бындю: "Использовать шаблон Specification вместе c шаблоном Query Object. Второй шаблон уже реализован в .NET с помощью дерева запросов на LINQ".

Domain-Driven Design: Repository (смотрите Решение №2)
Построение уровня доступа к данным с использованием шаблона "спецификация" в приложениях на ASP.NET MVC
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801647
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801691
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЧерез плечо!

Выбор ORM-стратегии (.NET)

http://az.lib.ru/d/dostoewskij_f_m/text_0050.shtml

Почитай. И пойми сам, что я этим хотел сказать.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801709
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, да всё тоже. Инструмент выбирается под задачу, возможно Парамону в конкретно его задаче dapper подойдёт лучше, чем EF.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801739
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, да всё тоже. Инструмент выбирается под задачу, возможно Парамону в конкретно его задаче dapper подойдёт лучше, чем EF.

Да понятно. Но твоё замечание «уделывает по скорости» несколько нелепо. Их нельзя сравнивать по скорости, ибо объём работы который выполняется в Dapper и EF различается конкретно. Если уж на то, то любой кавказец на шестёрочке «уделает» любого олипийца на велики, ведь Кавказ -- сила!
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801785
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, да всё тоже. Инструмент выбирается под задачу, возможно Парамону в конкретно его задаче dapper подойдёт лучше, чем EF.

Да понятно. Но твоё замечание «уделывает по скорости» несколько нелепо. Их нельзя сравнивать по скорости, ибо объём работы который выполняется в Dapper и EF различается конкретно. Если уж на то, то любой кавказец на шестёрочке «уделает» любого олипийца на велики, ведь Кавказ -- сила! Ну не надо.

Например ты отказался от такого функционала как ленивая загрузка (lazy-loading) и предзагрузка (eager fetching) в угоду проекциям.
Ты попросту перестал на этут тему заморачиваться.

Так может и вообще не нужено всего того "объёма работ", что выполняет EF и задача полностью решится скоростью Dapper-а?
Почему бы не задуматься на эту тему Парамону, ТСу, ещё какому читателю, а?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801793
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, вот кстати такой вопрос.

Если в сессии был загружен объект (для изменений например)
Код: c#
1.
Service.GetEntityById(id)

и по окончанию запроса мы отдаём его проекцию
Код: c#
1.
Service.GetAll().Where(entity => entity.Id == id).ToProject().To<EntityProjection>()

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

Так может и вообще не нужено всего того "объёма работ", что выполняет EF и задача полностью решится скоростью Dapper-а?
Почему бы не задуматься на эту тему Парамону, ТСу, ещё какому читателю, а?

Я не отказывался от ленивой загрузки. В проекции также могут быть целые объекты, с ленивыми пропертями. А от «жадной» загрузки да -- в основном отказался. Не нашлось ещё такой задачи, где бы оно пригодилось. Я ж не буду под какую-то непонятную возможность специально выдумывать задачу?

Кроме этого у EF есть целый вагон способностей, которых нет у Dapper. Если же в приоритете массивная работа с данными и она должна быть максимально быстрой, то можно посмотреть на Dapper. Или вообще NoSQL.

Просто странно, что вдруг внезапно предложил на «выбор» другой ORM — точнее micro ORM. Просто так. К чему бы это? Я уверен, что Парамон в состоянии исследовать варианты, если возникнет такая необходимость.

Когда EF был только в зачаточном состоянии, я использовал BLToolkit, ещё NHibernate (но этот пациент мне вообще не понравился, просто субъективно не вышло у нас подружиться). Потом увидел, что EF достиг юзабельного состояния и перешёл на него. О чём ни разу не пожалел. Последние версии EF работают очень даже шустро. Мало? Тогда прикручивается кеш 2 уровня, и вообще всё в шоколаде.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801875
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, вот кстати такой вопрос.

Если в сессии был загружен объект (для изменений например)
Код: c#
1.
Service.GetEntityById(id)


и по окончанию запроса мы отдаём его проекцию
Код: c#
1.
Service.GetAll().Where(entity => entity.Id == id).ToProject().To<EntityProjection>()


То EF поймёт что надо брать объект из кэша, или будет делать отдельный запрос к БД?

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

В рамках сессии один и тот же объект берётся из кеша. Но запрос с условием Where заставляет EF повторить запрос, даже если условие по Id. Это логично. Ну а если приделан кеш 2 уровня, повторного запроса к базе может и не быть.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801889
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПоследние версии EF работают очень даже шустро. Мало? Тогда прикручивается кеш 2 уровня, и вообще всё в шоколаде.Ты случаем не про эту ли статью: Second-Level Caching in the Entity Framework and Azure ?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801900
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, вот кстати такой вопрос.

Если в сессии был загружен объект (для изменений например)
Код: c#
1.
Service.GetEntityById(id)


и по окончанию запроса мы отдаём его проекцию
Код: c#
1.
Service.GetAll().Where(entity => entity.Id == id).ToProject().To<EntityProjection>()


То EF поймёт что надо брать объект из кэша, или будет делать отдельный запрос к БД?

Зачем его куда-то отдавать? UOW.Save() и дело с концом.Хм.

Пользователь запостил изменения, для изменений ты тянешь Entity.
Применили изменения, пользователю нужно отдать данные для отображения во View. Для отображения ты используешь проекции.

Вроде так.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801901
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVosttПоследние версии EF работают очень даже шустро. Мало? Тогда прикручивается кеш 2 уровня, и вообще всё в шоколаде.Ты случаем не про эту ли статью: Second-Level Caching in the Entity Framework and Azure ?

Я про https://efcache.codeplex.com/
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801905
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAпропущено...
Ты случаем не про эту ли статью: Second-Level Caching in the Entity Framework and Azure ?

Я про https://efcache.codeplex.com/ Использовал? С чем? Redis, Couchbase?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801906
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAХм.

Пользователь запостил изменения, для изменений ты тянешь Entity.
Применили изменения, пользователю нужно отдать данные для отображения во View. Для отображения ты используешь проекции.

Вроде так.

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


Я про https://efcache.codeplex.com/ Использовал? С чем? Redis, Couchbase?

Memory. Но в ближайшее время планируем поработать с Redis, как раз проект назревает, где может понадобиться работать с приличными нагрузками.
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801919
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAХм.

Пользователь запостил изменения, для изменений ты тянешь Entity.
Применили изменения, пользователю нужно отдать данные для отображения во View. Для отображения ты используешь проекции.

Вроде так.

А понял о чём ты. После сабмита данные будут извлечены ещё раз, если они будут затребованы, так за это время могут быть ещё и другие изменения (другими потоками например), которые следует учесть, чтобы отправляемые данные были максимально актуальны.Окей. А теперь представь, что вы перешли на Redis. Следовательно другие потоки обновили в нём данные.

EF поймёт это в случае с проекциями? Или тебе надо попробовать?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801922
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя если у вас один сервер, то должно работать и с Memory. При чём тут другие потоки, если всё в рамках одного пула?
...
Рейтинг: 0 / 0
Связь один к одному EF Code First
    #38801923
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что отмаза не катит :)
...
Рейтинг: 0 / 0
25 сообщений из 357, страница 13 из 15
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Связь один к одному EF Code First
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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