powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF и ORM
82 сообщений из 82, показаны все 4 страниц
WCF и ORM
    #39129714
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если тема где то раскрыта, то ткните.
Изучаю WCF.
Нарисовал себе задачу: wcf сервис работает с БД. Хочу работу с БД сделать через ORM.
Предполагаемая архитектура солюшена - 3 проекта: библиотека с контрактами, хост(реализует контракт) и предоставляет сервис, клиент(потребляет сервис).
1. Правильно ли я разделил ответственность? Может для данной задачи есть более правильная архитектура?
2. Как работать с ORM? Нужно пометить классы Entity как [DataMember].
...
Рейтинг: 0 / 0
WCF и ORM
    #39129729
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WCF и ORM могут иметь одну точку соприкосновения - ISession/DBcontext на запрос. Больше эти две темы никак не пересекаются.
...
Рейтинг: 0 / 0
WCF и ORM
    #39129758
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В контракте есть сложные типы. К примеру есть метод, который возвращает IEnumerable<Car>. Этот класс должен быть описан и в сервисе, и в клиенте.
Меня интересует как сделать отдельно библиотеку контрактов, чтобы избежать дублирование кода.
...
Рейтинг: 0 / 0
WCF и ORM
    #39129771
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaВ контракте есть сложные типы. К примеру есть метод, который возвращает IEnumerable<Car>. Этот класс должен быть описан и в сервисе, и в клиенте.
Меня интересует как сделать отдельно библиотеку контрактов, чтобы избежать дублирование кода.
А причем тут вообще ORM? Пока только все что Вы описываете - чистой воды импелементация WCF сервиса. Каким боком контракты относятся к ORM?
...
Рейтинг: 0 / 0
WCF и ORM
    #39129852
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой, поправка
2. Как работать с ORM? Нужно пометить классы Entity как [DataMember][DataContract].
...
Рейтинг: 0 / 0
WCF и ORM
    #39129902
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slivaой, поправка
2. Как работать с ORM? Нужно пометить классы Entity как [DataMember][DataContract].
Да, а еще есть OperationContractAttribute и ServiceContractAttribute. Про всех про них стОит почитать.
...
Рейтинг: 0 / 0
WCF и ORM
    #39130162
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

да не то.
Зайду с другой стороны.
Есть такое решение, что в контракте(отдельная сборка) у нас есть контракт и класс([DataContract]). У класса([DataContract]), есть еще атрибуты валидации.
Правильно ли размещать валидацию в контракте? Если нет, тогда где?
...
Рейтинг: 0 / 0
WCF и ORM
    #39130169
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaЕсть такое решение, что в контракте(отдельная сборка) у нас есть контракт и класс([DataContract]). У класса([DataContract]), есть еще атрибуты валидации.
Правильно ли размещать валидацию в контракте? Если нет, тогда где?
Атрибутам валидации в контракте я, считаю, не место. Лучше его оставить чистым и сделать decoupling между уровнем сервисов, DAL и морды.
...
Рейтинг: 0 / 0
WCF и ORM
    #39130289
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Что такое decoupling?
...
Рейтинг: 0 / 0
WCF и ORM
    #39130386
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sliva,

блабла
...
Рейтинг: 0 / 0
WCF и ORM
    #39130725
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaЧто такое decoupling ?
...
Рейтинг: 0 / 0
WCF и ORM
    #39130950
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronSlivaЧто такое decoupling ?
ниасилил
...
Рейтинг: 0 / 0
WCF и ORM
    #39130953
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видится так: использовать DTO и Automapper
...
Рейтинг: 0 / 0
WCF и ORM
    #39130956
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaВидится так: использовать DTO и Automapper

Дублирование классов не избежать
...
Рейтинг: 0 / 0
WCF и ORM
    #39131127
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если просто сервисеРеференсе? и никакого дублирования. прокси кодогенерится студией. а на клинской стороне (т.к. партиал) еще и расширение возможно
...
Рейтинг: 0 / 0
WCF и ORM
    #39131130
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slivaиспользовать DTO

я как-то спрыгнул с этого подхода
...
Рейтинг: 0 / 0
WCF и ORM
    #39131149
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawSlivaиспользовать DTO

я как-то спрыгнул с этого подхода
Чем не устроил?
...
Рейтинг: 0 / 0
WCF и ORM
    #39131153
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronkmawпропущено...


я как-то спрыгнул с этого подхода
Чем не устроил?

я сильно фанатично к нему подошел. и весь domain маппил в DTO с одной единственной целью - что бы через "веб-сервис". это имело негативные последствия
...
Рейтинг: 0 / 0
WCF и ORM
    #39131156
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawAxeleronпропущено...

Чем не устроил?

я сильно фанатично к нему подошел. и весь domain маппил в DTO с одной единственной целью - что бы через "веб-сервис". это имело негативные последствия
Которые выражались в написании однообразного кода или в чем?
...
Рейтинг: 0 / 0
WCF и ORM
    #39131160
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawAxeleronпропущено...

Чем не устроил?

я сильно фанатично к нему подошел. и весь domain маппил в DTO с одной единственной целью - что бы через "веб-сервис". это имело негативные последствия

хотя для веб-сервиса, может и оправдано. но для WCF точно перебор
...
Рейтинг: 0 / 0
WCF и ORM
    #39131161
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronkmawпропущено...


я сильно фанатично к нему подошел. и весь domain маппил в DTO с одной единственной целью - что бы через "веб-сервис". это имело негативные последствия
Которые выражались в написании однообразного кода или в чем?

да
...
Рейтинг: 0 / 0
WCF и ORM
    #39131164
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawkmawпропущено...


я сильно фанатично к нему подошел. и весь domain маппил в DTO с одной единственной целью - что бы через "веб-сервис". это имело негативные последствия

хотя для веб-сервиса, может и оправдано. но для WCF точно перебор

местами подрихтовать циклические ссылки - и коробочный сериализатор прекрасно domain отображает в то что надо. а для WinForms еще и INotifyChanged и BindingList
...
Рейтинг: 0 / 0
WCF и ORM
    #39131167
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawAxeleronпропущено...

Которые выражались в написании однообразного кода или в чем?

да
То есть по сути Вы предлагаете tightly coupled решение, когда Ваш фронт енд зависит всецело от контракта? Могу себе предсавить как Ваш проект сыплется на куски и волосы седеют как только контракт меняется...
...
Рейтинг: 0 / 0
WCF и ORM
    #39131170
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawkmawпропущено...


я сильно фанатично к нему подошел. и весь domain маппил в DTO с одной единственной целью - что бы через "веб-сервис". это имело негативные последствия

хотя для веб-сервиса, может и оправдано. но для WCF точно перебор
А что Вы под WCF понимаете тогда в данном конкретном вопросе, заданном топикстартером?
...
Рейтинг: 0 / 0
WCF и ORM
    #39131172
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronМогу себе предсавить как Ваш проект сыплется на куски и волосы седеют как только контракт меняется...

пока все нормально. тьфу, тьфу...
Axeleronфронт енд зависит всецело от контракта

а какие еще варианты, конечно зависит. хоть явно (ссылка на dll с контрактом), хоть через кодогенерацию
...
Рейтинг: 0 / 0
WCF и ORM
    #39131177
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawпока все нормально. тьфу, тьфу...
Если только гарантированно контракт сервисов никогда не поменяется, то, может, и ок. Но все равно расширять доменный объект, используемый в приложении, рано или поздно приходится. А имплементируете Вы его все равно на основе интерфейса контракта.

kmawа какие еще варианты, конечно зависит. хоть явно (ссылка на dll с контрактом), хоть через кодогенерацию
Еще loosely coupled решение, используя DTO паттерн. Тогда Вам просто маппер поправить, если контракт меняется.
...
Рейтинг: 0 / 0
WCF и ORM
    #39131179
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronТогда Вам просто маппер поправить, если контракт меняется.

я не вижу тут преимуществ. править - ключевое слово
...
Рейтинг: 0 / 0
WCF и ORM
    #39131182
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronНо все равно расширять доменный объект, используемый в приложении, рано или поздно приходится

если сильно, то это будет уже реальные DTO, а не только для передачи через веб-сервис, там и проекция и запрос меняетя. а чуть-чуть - можно и в партиал на клиенте
...
Рейтинг: 0 / 0
WCF и ORM
    #39131183
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawа чуть-чуть

типа галочку для гриды добавить
...
Рейтинг: 0 / 0
WCF и ORM
    #39131184
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawя не вижу тут преимуществ.
Вам просто повезло, что Вы еще просто не попадали в такие ситуации. Везение не носит системного характера.
...
Рейтинг: 0 / 0
WCF и ORM
    #39131188
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawа чуть-чуть - можно и в партиал на клиенте
Чуть-чуть уберут пару свойств или имя/тип свойства поменяют в контракте Ваши партнеры - тогда мы и поговорим :)
...
Рейтинг: 0 / 0
WCF и ORM
    #39131191
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronkmawя не вижу тут преимуществ.
Вам просто повезло, что Вы еще просто не попадали в такие ситуации. Везение не носит системного характера.

смотрите, WCF - это не какой-то внешний сервис, это Ваше, даже, возможно, в одном солюшн. так? и как там может что-то внезапно измениться?
...
Рейтинг: 0 / 0
WCF и ORM
    #39131194
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronkmawа чуть-чуть - можно и в партиал на клиенте
Чуть-чуть уберут пару свойств или имя/тип свойства поменяют в контракте Ваши партнеры - тогда мы и поговорим :)

это подстава я не знаю технологии, которая с этим может справиться
...
Рейтинг: 0 / 0
WCF и ORM
    #39131197
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawсмотрите, WCF - это не какой-то внешний сервис, это Ваше, даже, возможно, в одном солюшн. так? и как там может что-то внезапно измениться?
Давайте брать наиболее часто встречаемый общий случай. Например, сервис сторонней компании для букирования авиабилетов или отелей, обработка операций интернет-банкинга. Вот изменилось что-то, и Вы получили оповещение, что у Вас неделя на внесение изменений. Все бросать и срочно начинать все править в приложении? Потому что Вы точно значете, что изменения сервиса приведут к тому, что Ваш сайт обрушится.
...
Рейтинг: 0 / 0
WCF и ORM
    #39131203
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawAxeleronпропущено...

Чуть-чуть уберут пару свойств или имя/тип свойства поменяют в контракте Ваши партнеры - тогда мы и поговорим :)

это подстава я не знаю технологии, которая с этим может справиться
Вы просто получаете новый контракт от поставщика сервисов. Пользуйтесь :) Одно дело когда Вам нужно поменять один маппер класс, а другое когда проверять весь солюшн на соответствие контракту севриса. Чувствуете разницу?
...
Рейтинг: 0 / 0
WCF и ORM
    #39131206
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronkmawсмотрите, WCF - это не какой-то внешний сервис, это Ваше, даже, возможно, в одном солюшн. так? и как там может что-то внезапно измениться?
Давайте брать наиболее часто встречаемый общий случай. Например, сервис сторонней компании для букирования авиабилетов или отелей, обработка операций интернет-банкинга. Вот изменилось что-то, и Вы получили оповещение, что у Вас неделя на внесение изменений. Все бросать и срочно начинать все править в приложении? Потому что Вы точно значете, что изменения сервиса приведут к тому, что Ваш сайт обрушится.

часть откажет - не работают/изменились внешние сервисы.
...
Рейтинг: 0 / 0
WCF и ORM
    #39131208
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronkmawпропущено...


это подстава я не знаю технологии, которая с этим может справиться
Вы просто получаете новый контракт от поставщика сервисов. Пользуйтесь :) Одно дело когда Вам нужно поменять один маппер класс, а другое когда проверять весь солюшн на соответствие контракту севриса. Чувствуете разницу?

чувствую, спасибо за критику. но это всплыло в нашем разговоре, не имеет отношения, я думаю, к изначальному посылу ТС
...
Рейтинг: 0 / 0
WCF и ORM
    #39131209
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawчасть откажет - не работают/изменились внешние сервисы.
Ну если для Вас некритично, что из-за этого откажет часть Вашего приложения...
...
Рейтинг: 0 / 0
WCF и ORM
    #39131212
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawчувствую, спасибо за критику. но это всплыло в нашем разговоре, не имеет отношения, я думаю, к изначальному посылу ТС
Отчего же не имеет?
18573684
...
Рейтинг: 0 / 0
WCF и ORM
    #39131313
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawAxeleronпропущено...

Вам просто повезло, что Вы еще просто не попадали в такие ситуации. Везение не носит системного характера.

смотрите, WCF - это не какой-то внешний сервис, это Ваше, даже, возможно, в одном солюшн. так?даже если наше, то стоит смотреть на него как на отдельный сервис, который завтра возможно надо будет прикрутить к другой системе
...
Рейтинг: 0 / 0
WCF и ORM
    #39131329
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мозг болит
Напиши, пожалуйста, архитектуру солюшена с учетом орм.
...
Рейтинг: 0 / 0
WCF и ORM
    #39131333
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slivaмозг болит
Напиши, пожалуйста, архитектуру солюшена с учетом орм.

отдельный проект. в нем не должно быть ничего, кроме сервиса
...
Рейтинг: 0 / 0
WCF и ORM
    #39131346
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такая схема на сколько пригодна?

солюшен
--Contracts (контракты, сложные типы)
--DAL (EF, репозитирий)
--WCFservice (реализация контракта)
--Host
--Client
...
Рейтинг: 0 / 0
WCF и ORM
    #39133910
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возвращаясь к теме...
Мой первый "блин".
Покритикуйте, пожалуйста. По структуре, коду, по всему. Дельные советы очень приветствуются.
архив с проектом
...
Рейтинг: 0 / 0
WCF и ORM
    #39133915
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaВозвращаясь к теме...
Мой первый "блин".
Покритикуйте, пожалуйста. По структуре, коду, по всему. Дельные советы очень приветствуются.
архив с проектом зачем rat? GitHub есть
...
Рейтинг: 0 / 0
WCF и ORM
    #39133936
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то, что бросается в глаз сразу:
Код: c#
1.
private ContextDB context = new ContextDB();


инжектить в репозиторий, используя IoC, обеспечить время жизни ContextDB, например, "на запрос"


Код: c#
1.
context.SaveChanges();


из репозитория выносить в датасервис
...
Рейтинг: 0 / 0
WCF и ORM
    #39133939
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и без аутентификации как-то не интересно
...
Рейтинг: 0 / 0
WCF и ORM
    #39133947
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw,

пока так.
...
Рейтинг: 0 / 0
WCF и ORM
    #39133950
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawинжектить в репозиторий, используя IoC, обеспечить время жизни ContextDB, например, "на запрос"

Думал об этом. Для понимания самой сути решил делать без IoC.
...
Рейтинг: 0 / 0
WCF и ORM
    #39133955
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Да, конечно.
source
...
Рейтинг: 0 / 0
WCF и ORM
    #39133956
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw

Код: c#
1.
context.SaveChanges();


из репозитория выносить в датасервис

А чем плохо в репозитории?
...
Рейтинг: 0 / 0
WCF и ORM
    #39133981
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaskyANA,

Да, конечно.
source и что это? Я с iPad хочу посмотреть код.
...
Рейтинг: 0 / 0
WCF и ORM
    #39133987
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

там есть менюшка (слева) source
...
Рейтинг: 0 / 0
WCF и ORM
    #39134053
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slivakmaw
Код: c#
1.
context.SaveChanges();



из репозитория выносить в датасервис

А чем плохо в репозитории?

репозиториев может быть задействовано на одну бизнес-операцию (метод дата-сервиса) несколько, и SaveChanges лучше вынести в отдельный спец-репозиторий, который "только SaveChanges" и вызываться он будет из методов дата-сервиса. т.к. SaveChanges непосредственное отношение имеет к транзакции.
...
Рейтинг: 0 / 0
WCF и ORM
    #39134087
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawSlivaпропущено...


А чем плохо в репозитории?

репозиториев может быть задействовано на одну бизнес-операцию (метод дата-сервиса) несколько, и SaveChanges лучше вынести в отдельный спец-репозиторий, который "только SaveChanges" и вызываться он будет из методов дата-сервиса. т.к. SaveChanges непосредственное отношение имеет к транзакции.тогда уже в UnitOfWork, или Registry и назвать это дело Commit :) а SaveChanges пусть тупо прикрепляет объект к контексту.
...
Рейтинг: 0 / 0
WCF и ORM
    #39134546
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw
репозиториев может быть задействовано на одну бизнес-операцию (метод дата-сервиса) несколько, и SaveChanges лучше вынести в отдельный спец-репозиторий, который "только SaveChanges" и вызываться он будет из методов дата-сервиса. т.к. SaveChanges непосредственное отношение имеет к транзакции.
Что такое датасервис, более высокая абстракция? Отдельный слой? В каком месте данной архитектуры он будет находится?

kmawи без аутентификации как-то не интересно

Как можно аутентификацию в данную архитектуру вставить?
...
Рейтинг: 0 / 0
WCF и ORM
    #39134597
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaЧто такое датасервис, более высокая абстракция?

в вашем примере это внутренности реализации wcf-сервиса - их лучше в отдельную сборку вынести: эти функции часто нужны не только через wcf, а через какой-то другой вариант доступа
...
Рейтинг: 0 / 0
WCF и ORM
    #39135033
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw,

Не понятно. У нас есть DAL, там EF. Как коммитить из другой сборки (датасервис)?
...
Рейтинг: 0 / 0
WCF и ORM
    #39135056
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaskyANA,

там есть менюшка (слева) sourceПосмотрел.

1. Сразу бросается в глаза, что CityRepository - это копипаста ClientRepository . Даже не все методы переименованы. :)
2. На уровне WCF сервиса используются и DTO объекты (MyClient, MyCity), и зачем-то DataTable.
...
Рейтинг: 0 / 0
WCF и ORM
    #39135088
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
1. Сразу бросается в глаза, что CityRepository - это копипаста ClientRepository . Даже не все методы переименованы. :)
2. На уровне WCF сервиса используются и DTO объекты (MyClient, MyCity), и зачем-то DataTable.

1. Да, копипаста:) UnitOfWork?
2. А DTO и объекты использовать вместе не приветствуется? Передаю DataTable для простоты биндинга с datagrid. Или лучше передавать свой класс, слепленный из MyClient и MyCity?
...
Рейтинг: 0 / 0
WCF и ORM
    #39135091
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaПередаю DataTable для простоты биндинга с datagrid
...
Рейтинг: 0 / 0
WCF и ORM
    #39135199
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaskyANA1. Сразу бросается в глаза, что CityRepository - это копипаста ClientRepository . Даже не все методы переименованы. :)
2. На уровне WCF сервиса используются и DTO объекты (MyClient, MyCity), и зачем-то DataTable.

1. Да, копипаста:) UnitOfWork?
2. А DTO и объекты использовать вместе не приветствуется? Передаю DataTable для простоты биндинга с datagrid. Или лучше передавать свой класс, слепленный из MyClient и MyCity?Вам оно лучше знать, что подходит. Но...

Если у клиента вдруг появится список контактов, то как Вы это будете передавать в DataTable? :)
...
Рейтинг: 0 / 0
WCF и ORM
    #39135202
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Если у клиента вдруг появится список контактов, то как Вы это будете передавать в DataTable? :)

Вот, кстати, вопрос. Если нужно передать, к примеру, клиента и список контактов. На EF удобно работать с навигационными свойствами. Как сервису такое передать?
...
Рейтинг: 0 / 0
WCF и ORM
    #39135203
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaskyANAЕсли у клиента вдруг появится список контактов, то как Вы это будете передавать в DataTable? :)

Вот, кстати, вопрос. Если нужно передать, к примеру, клиента и список контактов. На EF удобно работать с навигационными свойствами. Как сервису такое передать?Как объект соответсвующего типа. В чём проблема?
...
Рейтинг: 0 / 0
WCF и ORM
    #39135205
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так например:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
namespace WcfServiceHost.Classes
{
    [DataContract]
    public class ClientSummary {
        [DataMember]
        public int Id { get; set; }

        [DataMember]
        public string LastName { get; set; }

        [DataMember]
        public string FirstName { get; set; }

        [DataMember]
        public int CityId { get; set; }

        public IEnumerable<ContactSummary> Contacts { get; set; }
    }
}
...
Рейтинг: 0 / 0
WCF и ORM
    #39135208
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

У меня классы контракта не связанны между собой. Видимо в этом моя проблема.
...
Рейтинг: 0 / 0
WCF и ORM
    #39135210
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaskyANA,

У меня классы контракта не связанны между собой. Видимо в этом моя проблема.
Хм, а какие конкретно классы надо "связать" и зачем?
...
Рейтинг: 0 / 0
WCF и ORM
    #39135211
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТак например:
понял. спасибо.
[/src]
...
Рейтинг: 0 / 0
WCF и ORM
    #39135215
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAХм, а какие конкретно классы надо "связать" и зачем?
Имелось в виду связь "главная-подчиненная"
...
Рейтинг: 0 / 0
WCF и ORM
    #39135218
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaskyANAХм, а какие конкретно классы надо "связать" и зачем?
Имелось в виду связь "главная-подчиненная"Это к таблицам относится, а не к классам.
...
Рейтинг: 0 / 0
WCF и ORM
    #39135227
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Вот на примере. Есть класс Client. У него есть поле cityId, которое ссылается на таблицу Cities. Как мне передать клиенту объект Client и получить name таблицы Cities?
2 мысли:
1. Расширить класс Client и предзаполнять поле.
2. Поддержка навигационных свойств на клиенте.
...
Рейтинг: 0 / 0
WCF и ORM
    #39135272
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложил исправления.
Поправил код, плюс сделал UnitOfWork.
Осталось IoC внедрить. Работал с ninject. Пока не понятно куда его прикрутить.
И аутентификацию. Ткните, где почитать.
...
Рейтинг: 0 / 0
WCF и ORM
    #39135328
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slivaплюс сделал UnitOfWork.

Ваш класс UnitOfWork - это какая-то лишняя прослойка. зачем? DbContext уже и так является UnitOfWork (да и репозиторием "общего назначения").

Код: c#
1.
2.
3.
public void Commit() {
            context.SaveChanges();
        } 



Commit - он у транзакции. где тут транзакция?

я бы выкинул Ваш класс UnitOfWork. куда-то вы не туда пошли, на мой взгляд.
...
Рейтинг: 0 / 0
WCF и ORM
    #39135374
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawSlivaплюс сделал UnitOfWork.

Ваш класс UnitOfWork - это какая-то лишняя прослойка. зачем? DbContext уже и так является UnitOfWork (да и репозиторием "общего назначения").

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

Работать с DbContex-ом из сервиса?
...
Рейтинг: 0 / 0
WCF и ORM
    #39135392
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaНу тогда и прослойку репозиторий можно убрать.

нет, не надо. в репозитории как раз и спрятан DbContext и детали ОРМ (раз с ней работаете).

SlivaРаботать с DbContex-ом из сервиса?

это путь в "баттонклик наше все". однозначно нет
...
Рейтинг: 0 / 0
WCF и ORM
    #39136304
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw
SlivaРаботать с DbContex-ом из сервиса?

это путь в "баттонклик наше все". однозначно нет

Подождите, у нас есть 2 репы, у которых должен быть один контекст. Получается, инициализируем и сейвим контекст в сервисе? т.е.
Код: c#
1.
2.
3.
public class ClientService : IClientService {
    ...
}


Если нет, то тогда как сервис должен работать с репами?
...
Рейтинг: 0 / 0
WCF и ORM
    #39137548
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в этом случае DbContext будет светиться за пределами DAL. Это же не правильно?
...
Рейтинг: 0 / 0
WCF и ORM
    #39137582
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlivaИ в этом случае DbContext будет светиться за пределами DAL. Это же не правильно?

http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1190871&msg=18567589

кто-то же должен его создать
...
Рейтинг: 0 / 0
WCF и ORM
    #39137594
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawSlivaИ в этом случае DbContext будет светиться за пределами DAL. Это же не правильно?

кто-то же должен его создать

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class ClientService : IClientService {

    private ContextDB context;
    private ClientRepository clientRepo;
    private CityRepository cityRepo;

    //конструктор
    public ClientService{
        context = new ContextDB();
        clientRepo = new ClientRepository(context);
        clientDetailRepo = new ClientDetailRepository(context);
    }

    //метод
    public void MethodSave(Client client){
        using(TransactionScope tran = new TransactionScope()){
            clientRepo.Update(client);
            clientDetailRepo.SomeMethod();
            context.Save();
            tran.Complete();
        }
    }
}


Оно?
...
Рейтинг: 0 / 0
WCF и ORM
    #39137603
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slivakmawпропущено...


кто-то же должен его создать

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class ClientService : IClientService {

    private ContextDB context;
    private ClientRepository clientRepo;
    private CityRepository cityRepo;

    //конструктор
    public ClientService{
        context = new ContextDB();
        clientRepo = new ClientRepository(context);
        clientDetailRepo = new ClientDetailRepository(context);
    }

    //метод
    public void MethodSave(Client client){
        using(TransactionScope tran = new TransactionScope()){
            clientRepo.Update(client);
            clientDetailRepo.SomeMethod();
            context.Save();
            tran.Complete();
        }
    }
}



Оно?

лучше, чтобы ContextDB инжектился в репозитории. репозитории инжектились в DataService. DataService инжектились в WCF-сервис. это посредством IoC. а создавать ContextDB можно через behavior WCF-сервиса
...
Рейтинг: 0 / 0
WCF и ORM
    #39137665
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmaw
лучше, чтобы ContextDB инжектился в репозитории. репозитории инжектились в DataService. DataService инжектились в WCF-сервис. это посредством IoC. а создавать ContextDB можно через behavior WCF-сервиса

кто бы все это еще и разжевал), желательно, схематично.
...
Рейтинг: 0 / 0
WCF и ORM
    #39137667
Фотография Sliva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В нете куча примеров, но там вся логика работы с сервисе. Толкового, пока, не нашел.
...
Рейтинг: 0 / 0
82 сообщений из 82, показаны все 4 страниц
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / WCF и ORM
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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