|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Как считаете, на сколько оправдано выделять Entity-модель (POCO-классы) в отдельную сборку без зависимости от EF? Т.е. максимально минимизировать эту зависимость, не до 0 конечно, атрибутов из System.ComponentModel.* хватает для описания, а чего не хватает описывается кастомными атрибутами. Я в последнее время придерживаюсь этого подхода и пока подвоных камней не встретил. Хорошо для тестирования (в разы), хорошо для возможности «съехать» с монатками от EF на какой-нибудь другой ORM при необходимости, чистота. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2014, 21:27 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
В текущем исполнении EF6 полностью уйти от зависимости не получится, поэтому особого смысла не вижу. Вариант для самозадротов. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2014, 23:31 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
МСУВ текущем исполнении EF6 полностью уйти от зависимости не получится, поэтому особого смысла не вижу. Вариант для самозадротов. Например, от чего уйти не получилось? Пока что не сталкивался с этим. Примерный расклад: Data — Entity-модель (классы), интерфейсы, enum-ы и ничего больше, никакой логики. Data Access — EF-контекст, реализация интерфейсов (слоя) для доступа к данным (репозиторий) Data Logic — реализация бизнес-логики, зависит от Data, но не от Data Access Таким образом можно тестировать всё по отдельности. Для тестов не надо вообще создавать никаких EF-контекстов, и даже знать об их существовании, достаточно мокать репозитории. Data Access тестируется отдельно, любым предпочтительным способом, например, SQLite in memory, да что угодно. Спрашиваю, потому что интересно, на какие грабли мне ещё не довелось наступить, хотелось бы глубже разобраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 01:09 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttКак считаете, на сколько оправдано выделять Entity-модель (POCO-классы) в отдельную сборку без зависимости от EF?Всё как всегда, сначала предлагается инновация, потом начинаются мысли "а зачем?" :-) hVosttТ.е. максимально минимизировать эту зависимость, не до 0 конечно, атрибутов из System.ComponentModel.* хватает для описания, а чего не хватает описывается кастомными атрибутами.Fluent API ? hVosttЯ в последнее время придерживаюсь этого подхода и пока подвоных камней не встретил. Хорошо для тестирования (в разы),Проще/лучше тестовую БД подсунуть? Там и тестовые данные могут быть, и сохранение данных в транзакции с отменой можно протестировать. hVosttхорошо для возможности «съехать» с монатками от EF на какой-нибудь другой ORM при необходимостиВряд ли удастся сделать кросс-ОРМ-ные LINQ2SQL запросы. hVostt... чистота.Субъективно. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 05:44 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttData Logic — реализация бизнес-логики, зависит от Data, но не от Data Access.Отделение логики от слоя, содержащего LINQ2SQL запросы, неминуемо приведёт к "N+1 запрос", со всеми вытекающими. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 05:47 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КFluent API ? соглашения лучше, чем Fluent API. тебе же нравится декларативность Knockout? может ну её к лешему, лучше jQuery API? Алексей КПроще/лучше тестовую БД подсунуть? Там и тестовые данные могут быть, и сохранение данных в транзакции с отменой можно протестировать. для тестов как раз требуется тестить чисто логику, без БД. затем можно и с БД потестить. никто не мешает. в этом вся прелесть, в гибкости. Алексей КВряд ли удастся сделать кросс-ОРМ-ные LINQ2SQL запросы. а зачем они? все запросы в слое доступа к данным. какие хочешь. хоть прямые SQL в базу, да хоть через ассемблер прям в кишки системы. но через слой доступа. за его пределами никто ниче про ни про какие SQL не знает, да и знать не хочет. Алексей КСубъективно. Ну как же, чистота в плане взаимозаменяемости и тестируемости. вполне определённые объективные метрики же? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 08:31 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КОтделение логики от слоя, содержащего LINQ2SQL запросы, неминуемо приведёт к "N+1 запрос", со всеми вытекающими. в смысле? что за N+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 08:32 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttАлексей КFluent API ? соглашения лучше, чем Fluent API. тебе же нравится декларативность Knockout? может ну её к лешему, лучше jQuery API? Fluent API не требует навешивания атрибутов, которые обычно специфичны для используемой ОРМ. Поэтому в твоих начинаниях Fluent API может быть полезен. Но я не настаиваю, просто предложил. :-) hVosttАлексей КПроще/лучше тестовую БД подсунуть? Там и тестовые данные могут быть, и сохранение данных в транзакции с отменой можно протестировать. для тестов как раз требуется тестить чисто логику, без БД. затем можно и с БД потестить. никто не мешает. в этом вся прелесть, в гибкости.Я не знаю как там у вас, у нас львиная доля логики выполняется в сгенерированном EF-ом SQL. Благодаря этому имеем максимальную производительность решения. Я не представляю выполнение логики без СУБД, хоть она и расположена в СП. hVosttАлексей КВряд ли удастся сделать кросс-ОРМ-ные LINQ2SQL запросы. а зачем они? все запросы в слое доступа к данным. какие хочешь. хоть прямые SQL в базу, да хоть через ассемблер прям в кишки системы. но через слой доступа. за его пределами никто ниче про ни про какие SQL не знает, да и знать не хочет.Нынче львиная доля логики выполнена в виде LINQ2SQL. Что поделать, тренд такой, и я с ним согласен. :-) hVosttАлексей КСубъективно. Ну как же, чистота в плане взаимозаменяемости и тестируемости. вполне определённые объективные метрики же?Мне производительность важнее. Строю архитектуру в первую очередь исходя из неё. Но я понимаю, что у всех своя специфика, возможно в твоём случае "N+1" на производительности существенно не сказывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 08:42 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КВсё как всегда, сначала предлагается инновация, потом начинаются мысли "а зачем?" :-)EF вроде как не инновация, но вопрос правильный :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 08:46 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttАлексей КОтделение логики от слоя, содержащего LINQ2SQL запросы, неминуемо приведёт к "N+1 запрос", со всеми вытекающими. в смысле? что за N+1 Не знаю как у вас, в моём случае вынос логики из LINQ-запросов приведёт к следующему: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
В простонародье это называется "N+1 query". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 08:49 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КhVosttпропущено... в смысле? что за N+1 Не знаю как у вас, в моём случае вынос логики из LINQ-запросов приведёт к следующему: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
В простонародье это называется "N+1 query".Парадокс однако. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 08:56 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
skyANAАлексей Кпропущено... Не знаю как у вас, в моём случае вынос логики из LINQ-запросов приведёт к следующему: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
В простонародье это называется "N+1 query".Парадокс однако.Что за парадокс? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 09:20 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttМСУВ текущем исполнении EF6 полностью уйти от зависимости не получится, поэтому особого смысла не вижу. Вариант для самозадротов. Например, от чего уйти не получилось? Пока что не сталкивался с этим. Жжешь... А это что? hVosttТ.е. максимально минимизировать эту зависимость, не до 0 конечно hVosttТаким образом можно тестировать всё по отдельности. Для тестов не надо вообще создавать никаких EF-контекстов, и даже знать об их существовании, достаточно мокать репозитории. Так для тестов и так не надо никаких EF контекстов, мокай репо и всё. Внутри репо - black box. Зачем тебе еще саму EDM модель абстрагировать? hVosttСпрашиваю, потому что интересно, на какие грабли мне ещё не довелось наступить, хотелось бы глубже разобраться. Не вижу необходимости тестировать EF контекст и её слой. Там тестировать нечего, логики там ровным счетом ноль. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 09:23 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
МСУhVosttТаким образом можно тестировать всё по отдельности. Для тестов не надо вообще создавать никаких EF-контекстов, и даже знать об их существовании, достаточно мокать репозитории. Так для тестов и так не надо никаких EF контекстов, мокай репо и всё. Внутри репо - black box. Зачем тебе еще саму EDM модель абстрагировать? hVosttСпрашиваю, потому что интересно, на какие грабли мне ещё не довелось наступить, хотелось бы глубже разобраться. Не вижу необходимости тестировать EF контекст и её слой. Там тестировать нечего, логики там ровным счетом ноль.Ещё один архитектор-теоретег. Как же ты собрался мутить OData, если у тебя нет логики в LINQ2SQL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 09:27 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей ККак же ты собрался мутить OData, если у тебя нет логики в LINQ2SQL ? Не путай тёплое с мягким, практег В OData на сервере - целая инфраструктура контроллеров, функций, экшенов, рутов, маппингов и прочего добра. Это полноценный сервис. Каким боком тут L2S и EF? Ты укурен? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 09:53 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
МСУАлексей ККак же ты собрался мутить OData, если у тебя нет логики в LINQ2SQL ? Не путай тёплое с мягким, практег В OData на сервере - целая инфраструктура контроллеров, функций, экшенов, рутов, маппингов и прочего добра. Это полноценный сервис. Каким боком тут L2S и EF? Ты укурен? Ну логично ОДату делать тупо на базе IQueryable от EF. Не? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:00 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КНу логично ОДату делать тупо на базе IQueryable от EF. Не? :-) Не "ОДату делать", а " модель ОДаты делать" от EF. ОДата - это не EF, практег :) В ОДате модель абстрактна, то есть в эту IEdmModel можно воткнуть не только EF. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:07 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
МСУАлексей КНу логично ОДату делать тупо на базе IQueryable от EF. Не? :-) Не "ОДату делать", а " модель ОДаты делать" от EF.Ну назови это так, я не против. МСУОДата - это не EF, практег :) МСУВ ОДате модель абстрактна, то есть в эту IEdmModel можно воткнуть не только EF.Я не про "можно", а про "проще". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:12 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей К, короче, любитель поклевать моск, в чем вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:21 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КFluent API не требует навешивания атрибутов, которые обычно специфичны для используемой ОРМ. Поэтому в твоих начинаниях Fluent API может быть полезен. Но я не настаиваю, просто предложил. :-) Дак я же сразу сказал, что атрибутов из ComponentModel.* хватает, а они к EF прямого отношения не имеют. А если чего не хватает, то кастомные атрибуты + соглашения, которые при любом раскладе лучшу Fluent. Алексей КЯ не знаю как там у вас, у нас львиная доля логики выполняется в сгенерированном EF-ом SQL. Благодаря этому имеем максимальную производительность решения. Я не представляю выполнение логики без СУБД, хоть она и расположена в СП. Ну так у тебя есть слой доступа к данным. Делай там свой SQL, мы делаем когда потребуется. Например, понадобилось FTS на СУБД, пжалста. Просто в Entity-модели, знать об этих деталях совершенно ни к чему. Алексей КМне производительность важнее. Строю архитектуру в первую очередь исходя из неё. Но я понимаю, что у всех своя специфика, возможно в твоём случае "N+1" на производительности существенно не сказывается. Просто не вижу как это влияет на производительность. Говорю же в слое доступа можешь делать что угодно, хоть ядро ОС ковырять. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:27 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КВ простонародье это называется "N+1 query". а, понял о чём ты. ну дак не вижу проблемы получить всё одним запросом, чистым LINQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:28 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
МСУЖжешь... А это что? hVosttТ.е. максимально минимизировать эту зависимость, не до 0 конечно 0 подразумевает вообще полное отсутствие. просто подразумевается, что слой доступа должен быть, для него вешаются эти атрибуты, просто детали реализации знать не надо, и следовательно прямой зависимости нет. МСУЗачем тебе еще саму EDM модель абстрагировать? так дело в том, что ты абстрагируешь слой доступа, а не EDM. что там внутри -- EDM, или NHibernate, или чистый ADO, это уже не важно. МСУТам тестировать нечего, логики там ровным счетом ноль. ну я бы не был так категоричен. покрытие 100% часто увеличивает ценник, истино тебе говорю ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:31 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
МСУАлексей К, короче, любитель поклевать моск, в чем вопрос? Кто виноват? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:34 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttАлексей КFluent API не требует навешивания атрибутов, которые обычно специфичны для используемой ОРМ. Поэтому в твоих начинаниях Fluent API может быть полезен. Но я не настаиваю, просто предложил. :-) Дак я же сразу сказал, что атрибутов из ComponentModel.* хватает, а они к EF прямого отношения не имеют.Перспективные ОРМ, на которые ты в будущем захочешь перейти, могут не уметь с ними работать. hVosttА если чего не хватает, то кастомные атрибуты + соглашения, которые при любом раскладе лучшу Fluent.В любом случае, я бы рассматривал Fluent как запасной вариант. hVosttАлексей КЯ не знаю как там у вас, у нас львиная доля логики выполняется в сгенерированном EF-ом SQL. Благодаря этому имеем максимальную производительность решения. Я не представляю выполнение логики без СУБД, хоть она и расположена в СП. Ну так у тебя есть слой доступа к данным. Делай там свой SQL, мы делаем когда потребуется. Например, понадобилось FTS на СУБД, пжалста. Просто в Entity-модели, знать об этих деталях совершенно ни к чему.Я не про SQL, я про LINQ. Например, может потребоваться использовать DbFunctions, специфичный для EF. Например, EF умеет выполнять LINQ запросы, возвращающие вложенные коллекции, а BLToolkit не умеет. Например, EF умеет транслировать в SQL DateTime.Now, а какой-нибудь другой ОРМ может этого не уметь. Примеров можно привести много. Считаю, что всё, что использует IQueryable, жёстко прибито к EF, надо смириться с этим. hVosttАлексей КМне производительность важнее. Строю архитектуру в первую очередь исходя из неё. Но я понимаю, что у всех своя специфика, возможно в твоём случае "N+1" на производительности существенно не сказывается. Просто не вижу как это влияет на производительность. Говорю же в слое доступа можешь делать что угодно, хоть ядро ОС ковырять.Так и делаем. Только в результате большая часть логики располагается в слое доступа, следовательно тестировать в других слоях просто нечего, логики в них нет или мало. В сложившейся ситуации самым разумным считаю использовать тестовую БД, что сразу и было предложено. :-) hVosttАлексей КВ простонародье это называется "N+1 query". а, понял о чём ты. ну дак не вижу проблемы получить всё одним запросом, чистым LINQ.В единичных случаях можно. Проблемы возникают при повторном использовании. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:47 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КВ любом случае, я бы рассматривал Fluent как запасной вариант. Тут спору нет. Алексей КПерспективные ОРМ, на которые ты в будущем захочешь перейти, могут не уметь с ними работать. Поймут, не пегеживай! Алексей КЯ не про SQL, я про LINQ. Например, может потребоваться использовать DbFunctions, специфичный для EF. Например, EF умеет выполнять LINQ запросы, возвращающие вложенные коллекции, а BLToolkit не умеет. Например, EF умеет транслировать в SQL DateTime.Now, а какой-нибудь другой ОРМ может этого не уметь. Примеров можно привести много. Считаю, что всё, что использует IQueryable, жёстко прибито к EF, надо смириться с этим. Вот не согласен. Давече пришлось работать с одной либой, которая решительно не жуёт DateTimeOffset в LINQ. Что делать? Простенький адаптер, и зажувала как миленькая Алексей КТак и делаем. Только в результате большая часть логики располагается в слое доступа, следовательно тестировать в других слоях просто нечего, логики в них нет или мало. В сложившейся ситуации самым разумным считаю использовать тестовую БД, что сразу и было предложено. :-) У тя бизнес-логика крепится к СУБД как рыба-прилипала? Это обосновано? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:51 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttАлексей КПерспективные ОРМ, на которые ты в будущем захочешь перейти, могут не уметь с ними работать. Поймут, не пегеживай! Оптимизм - это хорошо. :-) hVosttАлексей КЯ не про SQL, я про LINQ. Например, может потребоваться использовать DbFunctions, специфичный для EF. Например, EF умеет выполнять LINQ запросы, возвращающие вложенные коллекции, а BLToolkit не умеет. Например, EF умеет транслировать в SQL DateTime.Now, а какой-нибудь другой ОРМ может этого не уметь. Примеров можно привести много. Считаю, что всё, что использует IQueryable, жёстко прибито к EF, надо смириться с этим. Вот не согласен. Давече пришлось работать с одной либой, которая решительно не жуёт DateTimeOffset в LINQ. Что делать? Простенький адаптер, и зажувала как миленькая Повезло. Попробуй написать какой-нибудь адаптер для EF, преобразующий Expression Tree - хрентатам. Проще, чем писать LINQ-провайдер-обёртку на сегодняшний день решения нет. hVosttАлексей КТак и делаем. Только в результате большая часть логики располагается в слое доступа, следовательно тестировать в других слоях просто нечего, логики в них нет или мало. В сложившейся ситуации самым разумным считаю использовать тестовую БД, что сразу и было предложено. :-) У тя бизнес-логика крепится к СУБД как рыба-прилипала? Это обосновано?Ну это смотря с какой стороны посмотреть. Я бы сказал, что логика в моём случае жёстко крепится к EF. А провайдеры разных СУБД под EF6 худо-бедно стали появляться. А EF7 сразу позиционируется как мультиСУБДный. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 10:59 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КПовезло. Попробуй написать какой-нибудь адаптер для EF, преобразующий Expression Tree - хрентатам. Проще, чем писать LINQ-провайдер-обёртку на сегодняшний день решения нет. Ну нет в мире идеала.. Хотя нет, LINQ всё-таки к нему очень близок. При желании ET можно ковырять, это может быть сложно, но возможно. Ну а реализовывать LINQ провайдер никто не заставляет, нет же необходимости. Алексей КНу это смотря с какой стороны посмотреть. Я бы сказал, что логика в моём случае жёстко крепится к EF. А провайдеры разных СУБД под EF6 худо-бедно стали появляться. А EF7 сразу позиционируется как мультиСУБДный. А смысло в этом закреплении есть? Неужели всё в производительность упирается? LINQ2EF достаточно быстр же? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 11:04 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttАлексей КПовезло. Попробуй написать какой-нибудь адаптер для EF, преобразующий Expression Tree - хрентатам. Проще, чем писать LINQ-провайдер-обёртку на сегодняшний день решения нет. Ну нет в мире идеала.. Хотя нет, LINQ всё-таки к нему очень близок. При желании ET можно ковырять, это может быть сложно, но возможно. Ну а реализовывать LINQ провайдер никто не заставляет, нет же необходимости.Я не поленился, написал провайдер-обёртку. Теперь имею подставляемые выражения, как в LINQKit и BLToolkit, описание и реализация есть у меня на сайте, если интересно. Есть идея написать аналог SQL-ного case-when-then, но руки не доходят. В любом случае, полный контроль над Expression Tree радует. :-) hVosttАлексей КНу это смотря с какой стороны посмотреть. Я бы сказал, что логика в моём случае жёстко крепится к EF. А провайдеры разных СУБД под EF6 худо-бедно стали появляться. А EF7 сразу позиционируется как мультиСУБДный. А смысло в этом закреплении есть? Неужели всё в производительность упирается? LINQ2EF достаточно быстр же?Ну мы на EF строим в том числе и достаточно сложные отчёты. На этих задачах много мелких SQL-запросов сильно осложняют ситуацию, несмотря на то, что EF на сегодняшний день оптимизирован достаточно хорошо. В предыдущих десктопных проектах не было пэйджинга, этот факт так же осложняет ситуацию. В новых веб-проектах пэйджинг есть, возможно в них вреда от "N+1" будет меньше. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 11:15 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КЯ не поленился, написал провайдер-обёртку. Теперь имею подставляемые выражения, как в LINQKit и BLToolkit, описание и реализация есть у меня на сайте, если интересно. Есть идея написать аналог SQL-ного case-when-then, но руки не доходят. В любом случае, полный контроль над Expression Tree радует. :-) Ето да. А что BLTookite ещё жыф? Как так? Алексей КНу мы на EF строим в том числе и достаточно сложные отчёты. На этих задачах много мелких SQL-запросов сильно осложняют ситуацию, несмотря на то, что EF на сегодняшний день оптимизирован достаточно хорошо. В предыдущих десктопных проектах не было пэйджинга, этот факт так же осложняет ситуацию. В новых веб-проектах пэйджинг есть, возможно в них вреда от "N+1" будет меньше. А вьюхе можно мапить в классы, не пробовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 11:27 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttАлексей КЯ не поленился, написал провайдер-обёртку. Теперь имею подставляемые выражения, как в LINQKit и BLToolkit, описание и реализация есть у меня на сайте, если интересно. Есть идея написать аналог SQL-ного case-when-then, но руки не доходят. В любом случае, полный контроль над Expression Tree радует. :-) Ето да. А что BLTookite ещё жыф? Как так?Давно на него не смотрел. Слышал, что они сделали Linq2Db. hVosttАлексей КНу мы на EF строим в том числе и достаточно сложные отчёты. На этих задачах много мелких SQL-запросов сильно осложняют ситуацию, несмотря на то, что EF на сегодняшний день оптимизирован достаточно хорошо. В предыдущих десктопных проектах не было пэйджинга, этот факт так же осложняет ситуацию. В новых веб-проектах пэйджинг есть, возможно в них вреда от "N+1" будет меньше. А вьюхе можно мапить в классы, не пробовали?Используем, когда EF чего-то не может. Например - рекурсивные запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 11:44 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttпросто подразумевается, что слой доступа должен быть, для него вешаются эти атрибуты, просто детали реализации знать не надо, и следовательно прямой зависимости нет. Да выкинь ты нафик эти атрибуты, что ты зациклился на них. hVosttтак дело в том, что ты абстрагируешь слой доступа, а не EDM. что там внутри -- EDM, или NHibernate, или чистый ADO, это уже не важно. Ну такой и должна быть архитектура. В чем вопрос? hVosttну я бы не был так категоричен. покрытие 100% часто увеличивает ценник, истино тебе говорю Логика в поко? Укурен? :) Алексей КМСУАлексей К, короче, любитель поклевать моск, в чем вопрос? Кто виноват? Путин? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 11:55 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
МСУhVosttну я бы не был так категоричен. покрытие 100% часто увеличивает ценник, истино тебе говорю Логика в поко? Укурен? :)Rich domain model? МСУАлексей Кпропущено... Кто виноват? Путин? Что делать? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 12:10 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
МСУhVosttтак дело в том, что ты абстрагируешь слой доступа, а не EDM. что там внутри -- EDM, или NHibernate, или чистый ADO, это уже не важно. Ну такой и должна быть архитектура.Архитектура прошлого. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 12:16 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КМСУпропущено... Логика в поко? Укурен? :)Rich domain model? Упоротость и кретинизм? Алексей КМСУпропущено... Путин? Что делать? Избирать на второй срок? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 12:32 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
МСУАлексей Кпропущено... Rich domain model? Упоротость и кретинизм?Да. МСУАлексей Кпропущено... Что делать? Избирать на второй срок? Нет, я за конституционную монархию! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 12:39 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КДа. Да. Алексей КНет, я за конституционную монархию! Варианты? Алексей КАрхитектура прошлого. Неожиданно ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 12:48 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
МСУАлексей КДа. Да.Даа? МСУАлексей КНет, я за конституционную монархию! Варианты? А какие тут могут быть варианты? МСУАлексей КАрхитектура прошлого. Неожиданно Я всегда говорил, что с появлением LINQ мир сильно изменился. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 12:54 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
Алексей КИспользуем, когда EF чего-то не может. Например - рекурсивные запросы. Вьюху использую для этого, намапливаю в класс, а дальше обычный LINQ и любые запросы по любому уровню с любым вложением -- и быстро! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 12:55 |
|
Модель Entity без зависимости от EF
|
|||
---|---|---|---|
#18+
hVosttАлексей КИспользуем, когда EF чего-то не может. Например - рекурсивные запросы. Вьюху использую для этого, намапливаю в класс, а дальше обычный LINQ и любые запросы по любому уровню с любым вложением -- и быстро! Ну и я про то же. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2014, 12:56 |
|
|
start [/forum/moderation_log.php?user_name=Tik+Tak]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
others: | 692ms |
total: | 990ms |
0 / 0 |