|
|
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
5копеекВсем спасибо, почитал, подумал поэкспериментировал. универсальный класс в моем случае порождает слишком много всяких если. под каждую субд буду реализовывать свой класс обращения к данным. В конце концов разные типы коннекшнов и т.д. для того и создавали. Если бы все было так гладко, сделали бы один универсальный класс. Всем спасибо... плохо подумали. для того и реализован единый интерфейс для всех классов - чтобы по одному образцу работать со всеми. дело ваше (пожимает плечами...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 17:23 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
Ex_Soft Compositum упаковав код в расширяемый метод , который будет вызываться на классе DbCommandBuilder Маленький набросок, если можно... _________________ "Helo, word!" - 17 errors 56 warnings правда я для метода реализовал на выходе не void, но это не проблема - можете подправить код на своё усмотрение. вроде должно работать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 17:36 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
Compositum5копеекВсем спасибо, почитал, подумал поэкспериментировал. универсальный класс в моем случае порождает слишком много всяких если. под каждую субд буду реализовывать свой класс обращения к данным. В конце концов разные типы коннекшнов и т.д. для того и создавали. Если бы все было так гладко, сделали бы один универсальный класс. Всем спасибо... плохо подумали. для того и реализован единый интерфейс для всех классов - чтобы по одному образцу работать со всеми. дело ваше (пожимает плечами...) чем Ваш код Код: plaintext 1. 2. 3. 4. 5. 6. 7. отличается от моего изначального Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Плюсы в чем ? В вашем решении пока я вижу только лишние телодвижения и в результате те же проблемы: проверка по типу и кастомная логика для каждого типа, ручками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 17:54 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
5копеек Плюсы в чем ? В вашем решении пока я вижу только лишние телодвижения и в результате те же проблемы: проверка по типу и кастомная логика для каждого типа, ручками. плохо смотрите. вы знакомы с расширяющими методами (судя по вашей реплике - нет). Иначе бы знали, что данный класс добавляет к любому экземпляру класса DbCommandBuilder (или наследуемому от него) новый метод - DbDeriveParameters.Теперь любой экземпляр класса DbCommandBuilder имеет этот метод. Пояснять плюсы не буду, ибо они очевидны. п.с. не ленитесь читать книжки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:02 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
Compositum5копеек Плюсы в чем ? В вашем решении пока я вижу только лишние телодвижения и в результате те же проблемы: проверка по типу и кастомная логика для каждого типа, ручками. плохо смотрите. вы знакомы с расширяющими методами (судя по вашей реплике - нет). Иначе бы знали, что данный класс добавляет к любому экземпляру класса DbCommandBuilder (или наследуемому от него) новый метод - DbDeriveParameters.Теперь любой экземпляр класса DbCommandBuilder имеет этот метод. Пояснять плюсы не буду, ибо они очевидны. п.с. не ленитесь читать книжки... Я со всем этим согласен, но к выводу как раз пришел читая книжки, Цитирую: "Например не существует обобщенного способа перехватывать объекты исключений базы данных...." "... разные поставщики могут подерживать специализированные средства, недоступные для общих базовых классов" Я не говорю что предложенный вами подход неудачен. В вашем случае его возможно достаточно, в моем случае он может оказаться неоптимален. Причем неоптимален впоследствии. В данном случае мне важнее возможность как можно более широко использовать возможности предоставляемые каждой СУБД. А универсальный поставщик как раз сужает эти возможности. Условно говоря я лучше сейчас потрачу время, чем потом окажусь перед проблемой ради которой придется рефакторить пару-тройку-десятку приложений. В любом случае спасибо за инфо, все это очень помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:24 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
5копеекА универсальный поставщик как раз сужает эти возможности. Если честно - я не понял этой фразы. О каком универсальном поставщике идет речь? Ведь мы извлекаем каждый раз конкретного, нужного нам поставщика, просто упаковываем его в родительский класс. Но распаковать-то не проблема. Это в C++ (насколько я знаю) если бы мы упаковали объект дочернего класса в родительский, то все то, что было характерно чисто для дочернего класса - обрубалось, однако в шарпее это ведь не так - мы всегда может затем без каких либо потерь преобразовать в его настоящий тип и использовать его на все 100%. Поясните пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:32 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
Compositum, В с++ то - же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:35 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
5копеек "... не существует обобщенного способа перехватывать объекты исключений базы данных...." "... разные поставщики могут подерживать специализированные средства, недоступные для общих базовых классов" но ведь все поставщики так или иначе пишут код под .net, а следовательно, как мне кажется, все исключения должны наследоваться от класса Exeption. Т.е. можно программно отслеживать его. Видимо чего-то я не понимаю =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:37 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
SQL_LamerCompositum, В с++ то - же самое. значит путаю с др. языком... странно, мне почему-то запомнилось, что это именно в C++... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:39 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
5копеек, Ничего нигде вы не сужаете. Объясню по простому. У вас есть конкретные классы для работы с разными серверами(с учетом их индивидуальных особенностей). Фабрика вам дает упакованный объект, в этом конкретном классе вы его распаковываете, и работаете с учетом этих особенностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:39 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
SQL_Lamer5копеек, Ничего нигде вы не сужаете. Объясню по простому. У вас есть конкретные классы для работы с разными серверами(с учетом их индивидуальных особенностей). Фабрика вам дает упакованный объект, в этом конкретном классе вы его распаковываете, и работаете с учетом этих особенностей. +1: то, что я и пытаюсь объяснить человеку =) видать хреново объясняю =((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:42 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
SQL_Lamer, Мне почему-то казалось, что код, который я привел в самом начале для консольного приложения, довольно развёрнуто это раскрыл (просто для меня это очень наглядно, решил, что и для др. так же будет понятным)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:44 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
CompositumSQL_Lamer, Мне почему-то казалось, что код, который я привел в самом начале для консольного приложения, довольно развёрнуто это раскрыл (просто для меня это очень наглядно, решил, что и для др. так же будет понятным)... А я поленился читать первую страницу :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:45 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
SQL_LamerCompositumSQL_Lamer, Мне почему-то казалось, что код, который я привел в самом начале для консольного приложения, довольно развёрнуто это раскрыл (просто для меня это очень наглядно, решил, что и для др. так же будет понятным)... А я поленился читать первую страницу :)) а я там код не приводил, только ссылку на него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:47 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
Compositum, 5копеек просто не вкурил гибкость этого шаблона. Бывает. Если ему еще интерестна эта тема - рекомендую Гамму - паттерны проектирования. 5копеек, Прямой подход - который вы используете - ничем не плох, кроме отсутствия гибкости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 18:54 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. заменить на Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 21:50 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
PC_2, это еще зачем??? и что мы получим тогда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 21:52 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
что зачем ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 21:55 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
почему вместо ? Код: plaintext 1. нужно писать Код: plaintext 1. не знаю, посиди подумай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 21:57 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
PC_2 не знаю, посиди подумай чего мне-то думать? это не я написал, а ты, вот сиди и думай . смысл написанного мною ясен мне и так, а над этим не вижу смысла думать (ибо не вижу проблем в написанном мною коде, во всяком случае пока ;) ) Модератор: Тема перенесена из форума "C#.NET". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2009, 22:13 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
PC_2 Код: plaintext 1. Спасибо, на мой взгляд верное замечание. CompositumО каком универсальном поставщике идет речь? Ведь мы извлекаем каждый раз конкретного, нужного нам поставщика, просто упаковываем его в родительский класс. Но распаковать-то не проблема. Это в C++ (насколько я знаю) если бы мы упаковали объект дочернего класса в родительский, то все то, что было характерно чисто для дочернего класса - обрубалось, однако в шарпее это ведь не так - мы всегда может затем без каких либо потерь преобразовать в его настоящий тип и использовать его на все 100%. Поясните пожалуйста. В данном случае я понял вас так. Есть некий класс или унаследованный метод - оболочка обрабатывающая запросы к серверу БД. В него передаем класс DBcommand с заполнеными параметрами и строкой соединения. В вашем случае имеем внутри этого класса Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Я правильно понимаю или нет вашу идею? В моем случае Код: plaintext 1. 2. 3. 4. 5. в любом случае для каких то операций специфичных для каждого сервера БД нужно проверять тип провайдера и условно обрабатывать его. В таком контексте не вижу смысла использовать DbProviderFactory. Т.к логика что с ним что без него одинакова, а сложность кода возрастает. Возможно я чего то не понимаю, поясните. SQL_Lamer Ничего нигде вы не сужаете. Объясню по простому. У вас есть конкретные классы для работы с разными серверами(с учетом их индивидуальных особенностей). Фабрика вам дает упакованный объект, в этом конкретном классе вы его распаковываете, и работаете с учетом этих особенностей. я понимаю что фабрика дает мне объект, я не понимаю смысл писать под фабрику если можно написать new "то что мне нужно" точно так же в зависимости от строки подключения и получить объект заточеный под конкретную СУБД. Я не отвергаю этого подхода, просто не понимаю зачем лишняя возня с "упаковыванием / распаковыванием" как вы выразились Был бы смысл если бы все провайдеры были полностью взаимозаменяемы, но этого нет на 100%. Пока для меня смысл использования фабрики представляется примерно такой же как для того что бы использовать trim строки преобразовать ее сначала в объект а затем обратно в строку. В чем гибкость не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2009, 11:27 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
5копеек, возможно понимание придет к вам со временем, я устал биться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2009, 11:43 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
Compositum5копеек, возможно понимание придет к вам со временем, я устал биться Если вы не в состоянии объяснить, возможно вы сами не понимаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2009, 11:50 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
5копеекCompositum5копеек, возможно понимание придет к вам со временем, я устал биться Если вы не в состоянии объяснить, возможно вы сами не понимаете? именно так, я не понимаю вместе с разработчиками Майкрософта, создавшими класс DbProviderFactopy, и вместе с Дэвидом Сеппой, который в конце своей книги в приложении подробно разъясняет все прелести данного подхода вы обсолютно правы, снимаю шляпу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2009, 11:54 |
|
||
|
Соединение с разными серверами БД
|
|||
|---|---|---|---|
|
#18+
Compositum5копеекCompositum5копеек, возможно понимание придет к вам со временем, я устал биться Если вы не в состоянии объяснить, возможно вы сами не понимаете? именно так, я не понимаю вместе с разработчиками Майкрософта, создавшими класс DbProviderFactopy, и вместе с Дэвидом Сеппой, который в конце своей книги в приложении подробно разъясняет все прелести данного подхода вы обсолютно правы, снимаю шляпу Ну если у вас самоцель обязательно использовать каждый класс фреймворка, то тогда конечно вы правы . Ну раз Сеппа разъясняет, вам что стоит повторить то что он говорит? Пока мое впечатление осталось прежним. DbProviderFactopy для простеньких приложений , аля select * from employee годится. А когда требуются всякие извраты с БД с уже написанным приложением, лучше использовать свои методы/для каждой БД. А из книг я использую то что оправданно а не слепо пихаю везде модные новые словечки. Ни Сеппа ни разработчики microsofta мои проблемы решать потом не будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2009, 12:20 |
|
||
|
|

start [/forum/topic.php?fid=17&startmsg=35877369&tid=1351894]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 407ms |

| 0 / 0 |
