Re[4]: Пространство имён Rsdn.Framework.Data
От: IT Россия linq2db.com
Дата: 14.10.03 13:57
Оценка: +1
Здравствуйте, voxel3d, Вы писали:

V> Пользователя программы что должно интересовать? Что операция была окончена неудачно. А также возможность отослать разработчику информацию об ошибке. Разработчика что должно интересовать? Возможность получить исчерпывающую информацию об ошибке.


Всё так, но только это задача не библиотеки доступа к данным, а как минимум соответствующего слоя.

V>а внутри класса ExceptionHandler сделайте обработку всех исключений, выдачу понятного пользователю сообщения и создание лога с исчерпывающей информацией.


Какого ещё сообщения? А если эта библиотека используется на сервере или в веб приложении?

V>Внутри этого класса в лог скиньте StackTrace обработанный, сообщение об ошибке, ещё если надо что.. Программисту который использует Ваш класс, будет этого достаточно.


Нет, лучше иметь котлеты отдельно, мухи отдельно. Для обработки исключений MS написала специальный MS Exception Management Block, который занимается всеми перечисленными операциями. Подобная библиотека такими вещами заниматься не должна, это всего лишь библиотека, а не сервер приложений.
... << RSDN@Home 1.1 beta 2 >>
Если нам не помогут, то мы тоже никого не пощадим.
Re: Пространство имён Rsdn.Framework.Data
От: gloomy rocker Россия  
Дата: 15.10.03 11:58
Оценка: 16 (1)
Здравствуйте, Игорь Ткачёв, Вы писали:

ИТ>Статья:

ИТ>Пространство имён Rsdn.Framework.Data

ИТ>Авторы:

ИТ> Игорь Ткачёв

ИТ>Аннотация:

ИТ>В статье подробно рассматривается состав и способы применения пространства имён Rsdn.Framework.Data, представляющего собой высокоуровневую обёртку над ADO.NET.

Есть предложение добавить несколько методов типа:
IDictionary ExecuteDictionary(Type type, string key_field, ...)
чтобы можно было загрузить данные например в Hashtable.
... << RSDN@Home 1.1 beta 2 >>
Скука — двигатель прогресса.
Re[2]: Пространство имён Rsdn.Framework.Data
От: IT Россия linq2db.com
Дата: 15.10.03 13:22
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

GR>Есть предложение добавить несколько методов типа:

GR>IDictionary ExecuteDictionary(Type type, string key_field, ...)
GR>чтобы можно было загрузить данные например в Hashtable.

Добавим.
... << RSDN@Home 1.1 beta 2 >>
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Пространство имён Rsdn.Framework.Data
От: gloomy rocker Россия  
Дата: 15.10.03 13:40
Оценка:
Здравствуйте, IT, Вы писали:

IT>Здравствуйте, gloomy rocker, Вы писали:


GR>>Есть предложение добавить несколько методов типа:

GR>>IDictionary ExecuteDictionary(Type type, string key_field, ...)
GR>>чтобы можно было загрузить данные например в Hashtable.

IT> Добавим.

Здорово! Подожду обновления
... << RSDN@Home 1.1 beta 2 >>
Скука — двигатель прогресса.
Re[3]: Пространство имён Rsdn.Framework.Data
От: migel  
Дата: 15.10.03 15:52
Оценка:
Здравствуйте, IT, Вы писали:

IT>К сожалению, между исключениями, порождаемыми разнами провайдерами, практически нет ничего общего.

Вот за это Мелкософту большое человеческое спасибо

IT> Следовательно, всё что можно сделать — это выбрать из такого исключения сообщение и само сообще ние сохранить как вложенное. Пользователю всё равно придётся самостоятельно всё это обрабатывать, чтобы добраться до сути. Поэтому, особого смысла изобретать рапер и всё усложнять нет.


А по моему есть — код который ловит сообщения типа RSDN.Framework.Data.Exceptions гораздо понятнее.
Re[4]: Пространство имён Rsdn.Framework.Data
От: voxel3d  
Дата: 15.10.03 16:26
Оценка:
Здравствуйте, migel, Вы писали:

IT>> Следовательно, всё что можно сделать — это выбрать из такого исключения сообщение и само сообще ние сохранить как вложенное. Пользователю всё равно придётся самостоятельно всё это обрабатывать, чтобы добраться до сути. Поэтому, особого смысла изобретать рапер и всё усложнять нет.


M>А по моему есть — код который ловит сообщения типа RSDN.Framework.Data.Exceptions гораздо понятнее.


И, кстати, не только в удобочитаемости дело. Ну не понимаю, зачем абстрагироваться от провайдера, если это делать не до конца.


best regards..
in hack we trust.
Re[5]: Пространство имён Rsdn.Framework.Data
От: IT Россия linq2db.com
Дата: 15.10.03 17:27
Оценка:
Здравствуйте, voxel3d, Вы писали:

M>>А по моему есть — код который ловит сообщения типа RSDN.Framework.Data.Exceptions гораздо понятнее.


V> И, кстати, не только в удобочитаемости дело. Ну не понимаю, зачем абстрагироваться от провайдера, если это делать не до конца.


Это не "не до конца", а вообще никак. RSDN.Framework.Data.Exceptions выкидываются только когда что-то не так внутри сомой библиотеки.
Следуя же вашей логики необходимо иметь как минимум два типа исключений: DbManagerException и MapDataException. Первый должен заворачивать исключения провайдеров, второй обрабатывать маппинг. Так?
... << RSDN@Home 1.1 beta 2 >>
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Пространство имён Rsdn.Framework.Data
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.10.03 22:15
Оценка: -1
Здравствуйте, IT, Вы писали:

IT>Нет, лучше иметь котлеты отдельно, мухи отдельно. Для обработки исключений MS написала специальный MS Exception Management Block, который занимается всеми перечисленными операциями. Подобная библиотека такими вещами заниматься не должна, это всего лишь библиотека, а не сервер приложений.


Нда. А додуматься сделать ещиное дерево исключений они не могли? Опять эти орлы успешно решают проблемы созданные в соседнем отделе.
... << RSDN@Home 1.1 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Пространство имён Rsdn.Framework.Data
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.10.03 22:15
Оценка: +1
Здравствуйте, IT, Вы писали:

Вообще-то дело человек говорит. А нельзя эти МсБлоки прикрутить к твоей библиотеке? Если можно, то привел бы пример...
... << RSDN@Home 1.1 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Пространство имён Rsdn.Framework.Data
От: IT Россия linq2db.com
Дата: 15.10.03 22:32
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Вообще-то дело человек говорит.


Раз дело, значит сделаем. Дело же ещё нужно и отстоять и убедить в нём других. Меня уже почти убедили

VD>А нельзя эти МсБлоки прикрутить к твоей библиотеке? Если можно, то привел бы пример...


Exception Managment Block прикручивать нужно к бизнес-слоям, а не к библиотекам. Вот они, например, в Cache его воткнули, а если у меня своя логика обработки исключений? Но он же ведь уже там гвоздями прибит и даже Publish вызывает.
... << RSDN@Home 1.1 beta 2 >>
Если нам не помогут, то мы тоже никого не пощадим.
Re: Пространство имён Rsdn.Framework.Data
От: SiAVoL Россия  
Дата: 19.11.03 12:29
Оценка:
Может добавить функцию типа
        public static string GetMappedFieldName(
            string FieldName, Type BizType)

Она будет возвращать название колонки в БД на которую замаплено свойство FieldName у объекта типа BizType. Т.е. если есть класс
    public class BizEntity
    {
        [MapField("ident")]
        public int    ID;
        public string Name;
    }

то GetMappedFieldName("ID", typeof(BizEntity)) будет возвращать "ident".
Если это будет полезно не только мне, конечно...
И вообще в данном направлении можно функциональность порасширить. Можно например еще возвращать StringDictionary с ключем по названиям свойств бизнес-объекта, и значениями — замапленными полями...

ЗЫ: я в принципе и сам могу написать (я там уже глянул, вроде строк на 10 кода ), но хотелось бы это иметь как-то централизованно... А во внешней либе этого, как я понимаю, не сделать. Нужные для этого свойства и классы помечены как internal...
ЗЗЫ: Еще раз благодарю за отличнцю либу! И пользовать приятно и код читать интересно
... << RSDN@Home 1.1.0 stable >>
Re[2]: Пространство имён Rsdn.Framework.Data
От: IT Россия linq2db.com
Дата: 19.11.03 13:08
Оценка:
Здравствуйте, SiAVoL, Вы писали:

SAV>И вообще в данном направлении можно функциональность порасширить. Можно например еще возвращать StringDictionary с ключем по названиям свойств бизнес-объекта, и значениями — замапленными полями...


Все эти внутренности будут раскрыты с возможностью их расширения.

SAV>ЗЗЫ: Еще раз благодарю за отличнцю либу! И пользовать приятно и код читать интересно


Спасибо
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Пространство имён Rsdn.Framework.Data
От: SiAVoL Россия  
Дата: 19.11.03 13:21
Оценка:
Здравствуйте, SiAVoL, Вы писали:

SAV>Может добавить функцию типа

SAV>
SAV>        public static string GetMappedFieldName(
SAV>            string FieldName, Type BizType)
SAV>

SAV>Она будет возвращать название колонки в БД на которую замаплено свойство FieldName у объекта типа BizType.

Вот что-то набросал...
        public static string GetMappedFieldName(
            string FieldName, Type BizType)
        {
            TypeDescriptor td = TypeDescriptor.GetDescriptor(BizType);
            string tdName = string.Format(
                "{0}.MemberDescriptor.{1}", BizType.FullName, FieldName);
            
            for (int i = 0; i<td.MemberList.Count; i++ )
                if (((IMemberDescriptor)td.MemberList[i]).ToString() == tdName)
                    return (td as IDataSource).GetFieldName(i);

            return null;
        }

Критика принимается с радостью
... << RSDN@Home 1.1.0 stable >>
Re: Пространство имён Rsdn.Framework.Data
От: Merle Австрия http://rsdn.ru
Дата: 19.11.03 13:33
Оценка:
Здравствуйте, Игорь Ткачёв:

Вот еще мысль, вдруг пригодится...
Раз уж появилась обработка исключений, может перехватывать отдельно дедлоки (1205), и перезапускать убиенный запрос, пару раз.
В идеале это должно быть опционально, и с возможностью настравать интервал и количество перезапусков (хотя больше двух раз это уже клиника)

Но с другой стороны это можно и снаружи сделать, если очень надо...
Мы уже победили, просто это еще не так заметно...
Re[2]: Пространство имён Rsdn.Framework.Data
От: gloomy rocker Россия  
Дата: 19.11.03 13:51
Оценка:
Здравствуйте, Merle, Вы писали:

M>Здравствуйте, Игорь Ткачёв:


M>Вот еще мысль, вдруг пригодится...

M>Раз уж появилась обработка исключений, может перехватывать отдельно дедлоки (1205), и перезапускать убиенный запрос, пару раз.
M>В идеале это должно быть опционально, и с возможностью настравать интервал и количество перезапусков (хотя больше двух раз это уже клиника)

M>Но с другой стороны это можно и снаружи сделать, если очень надо...


У меня такое впечатление, что если переусердствовать с развитием этой библиотеки в облсти работы с BizEntity, то получим что-то типа System.Data.ObjectSpaces.

Что вы думаете об этом?
см. Longhorn SDK

Может стоит дождаться сабжа?
... << RSDN@Home 1.1 beta 2 >>
Скука — двигатель прогресса.
Re[3]: Пространство имён Rsdn.Framework.Data
От: Merle Австрия http://rsdn.ru
Дата: 19.11.03 13:56
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

GR>У меня такое впечатление, что если переусердствовать с развитием этой библиотеки в облсти работы с BizEntity, то получим что-то типа System.Data.ObjectSpaces.

Не, ObjectSpaces — это немного другая... конструкция. Лучше всего TK об этом расскажет.

GR>Может стоит дождаться сабжа?

Ага, годика полтора два...
За это время, либо ишак, либо эмир, либо я...
Мы уже победили, просто это еще не так заметно...
Re[4]: Пространство имён Rsdn.Framework.Data
От: gloomy rocker Россия  
Дата: 19.11.03 14:04
Оценка:
Здравствуйте, Merle, Вы писали:

M>Здравствуйте, gloomy rocker, Вы писали:


GR>>У меня такое впечатление, что если переусердствовать с развитием этой библиотеки в облсти работы с BizEntity, то получим что-то типа System.Data.ObjectSpaces.

M>Не, ObjectSpaces — это немного другая... конструкция. Лучше всего TK об этом расскажет.
Да я и сам почитать могу. Только времени пока нет. Просто показалось что прогресс движется в сторону изобретения очередного велосипеда. Вот и возник такой вопрос. А вообще конечно надо бы уже начинать почитывать про сабж, чтобы в курсе дела быть.

GR>>Может стоит дождаться сабжа?

M>Ага, годика полтора два...
M>За это время, либо ишак, либо эмир, либо я...
Ну это да. Хотя бетты уже можно пробовать, а если проект долгосрочный, то к моменту его релиза уже выйдут соответствующие релизы Longhorn и Whidby. И все будет круто
... << RSDN@Home 1.1 beta 2 >>
Скука — двигатель прогресса.
Re[5]: Пространство имён Rsdn.Framework.Data
От: IT Россия linq2db.com
Дата: 19.11.03 14:38
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

GR>>>У меня такое впечатление, что если переусердствовать с развитием этой библиотеки в облсти работы с BizEntity, то получим что-то типа System.Data.ObjectSpaces.


Осталось только добавить описание в XML и поддержку абстрактных классов. И то и другое уже почти готово

M>>Не, ObjectSpaces — это немного другая... конструкция. Лучше всего TK об этом расскажет.

GR>Да я и сам почитать могу. Только времени пока нет. Просто показалось что прогресс движется в сторону изобретения очередного велосипеда. Вот и возник такой вопрос.

Только пока мы ждём и изобретаем будущий велосипед, MS в своих проектах как раз пользуется Rsdn.Framework.Data
Если нам не помогут, то мы тоже никого не пощадим.
Re: Пространство имён Rsdn.Framework.Data
От: Walker США  
Дата: 19.11.03 14:42
Оценка:
Здравствуйте, Игорь Ткачёв, Вы писали:

ИТ>Статья:

ИТ>Пространство имён Rsdn.Framework.Data

ИТ>Авторы:

ИТ> Игорь Ткачёв

ИТ>Аннотация:

ИТ>В статье подробно рассматривается состав и способы применения пространства имён Rsdn.Framework.Data, представляющего собой высокоуровневую обёртку над ADO.NET.

Ну, для начала естественно — спасибо, эта библиотека сэкономила мне кучу времени, которое я уже было начал тратить на написание чего-то подобного, т.к. приложение должно уметь рабртать с несколькими типами БД. Только вот я столкнулся с такой проблемой. Как я понял, библиотека в основном ориентирована на работу с бизнес объектами напрямую. У меня же идет активная работа с датасетами в обе стороны, а никаких функций там не предусмотрено для Update(), оно и в некотором смысле понятно, бо для этого нужно 3 Commands, а сейчас там только 1 на весь инстанс. Собственно, планируется что-нибудь в этом направлении, или может как-то люди обходят использование апдейтов из датасетов какими-то другими эффективными способами? или я просто что-то недопонял
Re[2]: Пространство имён Rsdn.Framework.Data
От: IT Россия linq2db.com
Дата: 19.11.03 14:48
Оценка:
Здравствуйте, Walker, Вы писали:

W>У меня же идет активная работа с датасетами в обе стороны, а никаких функций там не предусмотрено для Update(), оно и в некотором смысле понятно, бо для этого нужно 3 Commands, а сейчас там только 1 на весь инстанс. Собственно, планируется что-нибудь в этом направлении, или может как-то люди обходят использование апдейтов из датасетов какими-то другими эффективными способами? или я просто что-то недопонял


Больше заточено на бизнес-объекты. Но дописать что-то ещё проблем нет, нужны только идеи как это сделать.
Если нам не помогут, то мы тоже никого не пощадим.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.