|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
Как известно, LINQ не поддерживает конструкторы с параметрами. А что, если у меня вся логика в конструкторе основана именно на параметрах и мне нужно их обязательно передать? В LINQ я могу использовать для этого только инициализатор объекта, но логика-то у меня работает именно с параметрами конструктора и именно в конструкторе с параметрами. Как поступить? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 11:46 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
Заталкивать одну и ту же логику и в конструктор с параметрами, и в конструктор без параметров? - Фигня получается, да и юзер может попытаться использовать конструктор без параметров без инициализатора объекта, что приведёт к сбою работы логики в нём. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 11:47 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
user7320Как известно, LINQ не поддерживает конструкторы с параметрами. Что это за бред? user7320А что, если у меня вся логика в конструкторе... За логику в конструкторе нужно скручивать руки и засовывать их догадайся куда. user7320В LINQ я могу использовать для этого только инициализатор объекта Ты что там куришь? Что за инициализатор объекта? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 11:51 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
авторюзер может попытаться использовать конструктор без параметров без инициализатора объектаМожно скрыть от юзера конструктор без параметров. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 11:54 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
Хотя может он и от линка скроется? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 11:57 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
авторЧто за инициализатор объекта? http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx авторавторКак известно, LINQ не поддерживает конструкторы с параметрами.Что это за бред? http://stackoverflow.com/questions/3571084/only-parameterless-constructors-and-initializers-are-supported-in-linq-to-entiti авторЗа логику в конструкторе нужно скручивать руки и засовывать их догадайся куда. Там логика, которая строит экземляр - свойства там заполняет и всё такое. В частности, в конструкторе выполняется запрос к БД через LINQ to Entities. Для этого нужны параметры. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 12:30 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
AntonariyХотя может он и от линка скроется? Ну да. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 12:30 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
user7320авторЧто за инициализатор объекта? http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx Причем тут LINQ? user7320 http://stackoverflow.com/questions/3571084/only-parameterless-constructors-and-initializers-are-supported-in-linq-to-entiti И в чем проблема? user7320В частности, в конструкторе выполняется запрос к БД через LINQ to Entities. Для этого нужны параметры. Расстреливать на месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 12:49 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
МСУuser7320пропущено... http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx Причем тут LINQ? user7320 http://stackoverflow.com/questions/3571084/only-parameterless-constructors-and-initializers-are-supported-in-linq-to-entiti И в чем проблема? user7320В частности, в конструкторе выполняется запрос к БД через LINQ to Entities. Для этого нужны параметры. Расстреливать на месте. А как надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 13:11 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
user7320А как надо? Честно признаться, я даже твою проблему не понял :) Напиши кодом, что у тебя не получается. Может, это трудности изложения... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 13:15 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
МСУuser7320А как надо? Честно признаться, я даже твою проблему не понял :) Напиши кодом, что у тебя не получается. Может, это трудности изложения... У меня старая тема . Мне надо создать сложный объект, у которого есть поля-коллеции, у которых свои поля-коллекции и т. д. Все поля заполнить нужно из БД, причём выборки надо проводить по определённым параметрам. Вы там все упёрлись в репозиторий. И как тут поможет репозиторий или ещё какая штука, чтобы создать такой объект? Я не знаю, почему EF не поддерживает конструкторы с параметрами, но если бы поддерживал, то у меня бы не было проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 13:30 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 13:35 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#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.
Если что, я раньше спрашивал, чтобы в конструктор типа GroupModel передать контекст БД или в нём самом создавать этот контект. Потому что коллецию Biogroups у типа GroupModel заполнял в конструкторе GroupModel. А теперь всё делаю один запросов в инициализаторах. Не то, чтобы я раньше об этом не знал... но как-то подзабыл. И получается, что тот вопрос отпал. Ну, это же значительно лучше, чем у меня раньше было? Что вы об этом думаете? И да, я пока не буду репозиторий использовать всё равно. Ведь раньше же как-то жили без репозиториев и ничего - спутники летали, корабли плавали. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 13:52 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
Мне только интересно, во что такой запрос линка выльется в SQL. Наверное, там такая каша будет... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 13:54 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
user7320И да, я пока не буду репозиторий использовать всё равно. Ведь раньше же как-то жили без репозиториев и ничего - спутники летали, корабли плавали.Репозиторий - это тупо класс, что инкапсулирует в себе логику работы с хранимыми данными. Кто-то когда-то выделил этот класс, так как ему это было надо в практических целях, и использовал такой подход в последующих проектах. Получился шаблон. До появления шаблона каждый делал по своему, и сейчас не запрещается поступать также. Не хочешь, не используй. Проектируй свои собственные классы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 14:32 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
А как насчёт предложенного мной запроса выше ? Какие могут быть минусы при использовании таких... эмм... каскадов инициализаторов объектов в LINQ-выражениях? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 15:39 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
user7320, используется ToList(), то есть будет fetch из WeedGroups, и во время него будет выполняться запрос к Biogroups. Может вылететь исключение, что нельзя открыть DataReader, т.к. уже есть один открытый. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 16:09 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
А про обращение к БД в конктрукторе доменного объекта я промолчу. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 16:15 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
skyANAА про обращение к БД в конктрукторе доменного объекта я промолчу. Ну, вы как бы не замечайте этого. Я же сказал, что пока без репозитория. skyANAuser7320, используется ToList(), то есть будет fetch из WeedGroups, и во время него будет выполняться запрос к Biogroups. Может вылететь исключение, что нельзя открыть DataReader, т.к. уже есть один открытый. А что значит "может вылететь"? Я вот запустил пару раз - и всё открылось и выполнилось. При каких условиях может, а при каких не может? Памяти ему не хватит, или количество DataReader'ов ограничего? Я щас запустил этот код - странно, но почему-то он выдал "Only parameterless constructors and initializers are supported in LINQ to Entities". Это чего, и ReadOnlyCollection тоже нельзя применять, если она с параметров в конструкторе? UPD. Вы меня уговорили. Вместо IReadOnlyCollection стал использовать IEnumerable. Но не потому, что так типа нужно, а потому, что в линке нельзя использовать параметризованные конструкторы (словил исключение - у ReadOnlyCollection конструктор всего один и обязательно с параметром). И да, убрал ToList в середине запроса. Но не потому, что там типа ДатаРидеров не хватит, а потому, что линк не понимает таких выражений (тоже словил исключение). В результате получилось вот что. Ну, как теперь? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 17:08 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
user7320Это делается в репозитории. ЧЕСНА!!!Ага, так я и проверил. Использование this.Groups в этом не убеждает. А в остальном... должно работать... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 17:32 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
user7320UPD. Вы меня уговорили. Вместо IReadOnlyCollection стал использовать IEnumerable. Но не потому, что так типа нужно, а потому, что в линке нельзя использовать параметризованные конструкторы (словил исключение - у ReadOnlyCollection конструктор всего один и обязательно с параметром). И да, убрал ToList в середине запроса. Но не потому, что там типа ДатаРидеров не хватит, а потому, что линк не понимает таких выражений (тоже словил исключение).Проектирование доменной можеди завязано на "в линке нельзя использовать параметризованные конструкторы", смешно. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 17:37 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
skyANAuser7320Это делается в репозитории. ЧЕСНА!!!Ага, так я и проверил. Использование this.Groups в этом не убеждает. А в остальном... должно работать... Я проверил - работает. А у меня такой вопрос. Кто-нибудь смешивал в одном проекте ORM'ы EF от нескольких БД, при этом сами ORM'ы сгенерены EF разных версий? В частности, у меня в старом проекте надо было добавить функциональности, для этого требовалось подключение к дополнительной БД. Со старой БД соединялся с помощью ORM от EF версии то ли 1.х, то ли 4.0 - вобщем, когда он ещё не умел POCO делать. А с новой БД - с помощью POCO ORM. Ну, и в старом ORM вылетало исключение "Could not find the conceptual model type..." (ситуация типа такой ). В обоих случаях подходы Database First. Вынесение ОРМа новой БД в новый проект того же солюшена не помогло. Переделка старого ОРМа под POCO повлекла ошибки залогинивания, причём как при обращении к старой БД, так и к новой, что на одном сервере, что на другом (на моей машине копия по структуре продакшеновой БД стоит). Насколько я нарыл в Инете, это скорее связано с какими-то настройками то ли СУБД, то ли ОС с её правами доступа. Только штука в том, что если создать новый, пустой проект, и поместить туда два этих ОРМа (к новой и к старой БД), то всё работает и проблем с залогиниванием нет. Я решил пока это так: вынес ОРМ к новой БД в отдельный солюшен, и подключился из старого солюшена к сборке солюшена с новым ОРМ. Вобщем, я не прошу во всю эту писанину вникать, просто хочу узнать - кто-нибудь комбинировал ОРМы старых и новых версий EF (особенно с POCO и без) в одном проекте и были ли при этом какие-нибудь проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 19:17 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
user7320, все равно, репозитарий не буду делать (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2013, 20:40 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
Где-то в степиuser7320, все равно, репозитарий не буду делать (с) Вы ещё скажите, что каждое ОРМ у вас в своём репозитории, а не все в одном. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2013, 06:05 |
|
Как поступить, если очень хочется использовать LINQ и конструкторы с параметрами?
|
|||
---|---|---|---|
#18+
user7320Где-то в степиuser7320, все равно, репозитарий не буду делать (с) Вы ещё скажите, что каждое ОРМ у вас в своём репозитории, а не все в одном. А каждый репозиторий - отдельный солюшен. Проблема-то всё равно должна остаться та же, что я описал. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2013, 06:06 |
|
|
start [/forum/topic.php?fid=17&fpage=23&tid=1349912]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
others: | 241ms |
total: | 436ms |
0 / 0 |