В общем, хочу представить вашему вниманию свой проект для облегчения работы с Linq2BLT, целью которого в основном лишить Linq2SQL своего последнего (ИМХО) преимущества — наличия генератора классов. Про фичи лучше читайте тут: http://code.google.com/p/bltutilsvspackage/, ибо здесь их писать бесполезно ввиду того, что проект в активной разработке и список фичей будет меняться. Сегодня сделал более-менее рабочий инсталлер, но если что, проект можно собрать и самостоятельно. Для сборки нужен установленный VS SDK, для сборки сетапа — WiX 3.0 SDK, всё остальное уже имеется в SVN. Сам BLToolkit подключен через svn:external, посему при обновлении данного репозитория автоматически обновится и BLToolkit.
Краткая инструкция по использованию:
Правый щелчок на c# проекте -> Add New Item... -> BLToolkit Settings File -> Назови его как-нить(это имя будет частью имени контекста — SomethingDbContext) -> OK
Далее, дабл-клик на файле — ты увидишь страницу настроек. Вводишь имя сервака и имя базы. Из типов креденшелов пока работают тока 2 — clear text и Intergrated. После ввода инфы тыкай "Сохранить".
Для (пере)генерации файлов правый клик на проекте -> "Update Database Definition". По идее всё должно пройти нормально. Дальше надо руками подключить референс на BLToolkit и после этого проект должен нормально собираться.
Баги/предложения писать сюда или напрямую в багтрекер на сайте — буду разбираться по мере возможностей.
Огромное спасибо товарищу под ником Holms за альфа-тестирование и предложения!
IT>Баги:
IT>- обламывается на именах таблиц с пробелами вроде "Order Details" из Northwind.
Fixed in rev. 26
IT>Пожелания:
IT>- добавить опции для генерации автосвойств или полей.
С автосвойствами да и вообще с внешним видом кода засада — я использую CodeDom для генерации кода, а там почти нет возможностей для управления внешним видом... Если кто вдруг знает, как устроить автосвойства через CodeDom — подскажите, я сделаю.
Ещё Holms подкинул идею генерить enum'ы для словарей на основе содержимого таблиц. Мне кажется, интересная мысля. В ближайшие выходные попробую что-нить сделать в этой сфере...
Здравствуйте, koandrew, Вы писали:
K>Если кто вдруг знает, как устроить автосвойства через CodeDom — подскажите, я сделаю.
Долько добавлением сниппета. Поэтому даже сам МС ныне использует не CodeDOM, а T4 и индивидуальные шаблоны для каждого языка.
K>Ещё Holms подкинул идею генерить enum'ы для словарей на основе содержимого таблиц.
Какая то очень странная идея, ИМХО.
... << RSDN@Home 1.2.0 alpha 4 rev. 1418 on Windows 7 6.1.7600.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Долько добавлением сниппета. Поэтому даже сам МС ныне использует не CodeDOM, а T4 и индивидуальные шаблоны для каждого языка.
Откровенно говоря, я не вижу особого смысла заниматься украшательством автогенерённого кода, ибо он не предназначен для ручной правки... И CodeDom я выбрал по двум причинам — легкость переключения языка, на котором генерится код, и более-менее вменяемая и, что самое главное, готовая объектная модель.
Здравствуйте, koandrew, Вы писали:
K>Откровенно говоря, я не вижу особого смысла заниматься украшательством автогенерённого кода
Украшательство бог с ним, а вот отсутствие кучи конструкций это куда серьезнее.
K>И CodeDom я выбрал по двум причинам — легкость переключения языка, на котором генерится код
Как видишь, легкость относительная.
K>, и более-менее вменяемая и, что самое главное, готовая объектная модель.
Оно тебе нафига? Т4 как то без обходится, и ничего.
... << RSDN@Home 1.2.0 alpha 4 rev. 1418 on Windows 7 6.1.7600.0>>
Здравствуйте, koandrew, Вы писали:
K>Откровенно говоря, я не вижу особого смысла заниматься украшательством автогенерённого кода, ибо он не предназначен для ручной правки...
Украшательством есть всегда смысл заниматься, хотя бы для того, чтобы не шарахаться от монитора, когда отладчик входит внутрь сгенерированного метода. Автосвойства полезны как раз для того, чтобы лишний раз в такой код не заходить. Маппинг на поля, как я понимаю, вообще не возможен.
K>И CodeDom я выбрал по двум причинам — легкость переключения языка, на котором генерится код, и более-менее вменяемая и, что самое главное, готовая объектная модель.
Сложно что либо сказать. Часто бывает, что выбор простого, но не гибкого решения в дальнейшем оборачивается редкостным гемором и вся задача сводится в дальнейшем к борьбе с этой негибкостью и решение очень быстро превращается из простого в сложное и запутанное.
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, IT, Вы писали: IT>Украшательством есть всегда смысл заниматься, хотя бы для того, чтобы не шарахаться от монитора, когда отладчик входит внутрь сгенерированного метода. Автосвойства полезны как раз для того, чтобы лишний раз в такой код не заходить.
Может и так. В принципе переделать движок дело не особенно сложное.
IT>Маппинг на поля, как я понимаю, вообще не возможен.
А он нужен? Если будет нужен — сделаю. Ничего сложного там нет.
IT>Сложно что либо сказать. Часто бывает, что выбор простого, но не гибкого решения в дальнейшем оборачивается редкостным гемором и вся задача сводится в дальнейшем к борьбе с этой негибкостью и решение очень быстро превращается из простого в сложное и запутанное.
Бывает и так...
Здравствуйте, koandrew, Вы писали:
IT>>- добавить опции для генерации автосвойств или полей.
K>Сейчас перечитал — ты имеешь ввиду генерацию публичных полей вместо свойств? Мне всегда казалось это очень плохим стилем
Что именно в этом плохого?
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, koandrew, Вы писали:
IT>>Маппинг на поля, как я понимаю, вообще не возможен. K>А он нужен? Если будет нужен — сделаю. Ничего сложного там нет.
Раз не сложно, то почему бы и не сделать.
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, koandrew, Вы писали:
K>С автосвойствами да и вообще с внешним видом кода засада — я использую CodeDom для генерации кода, а там почти нет возможностей для управления внешним видом... Если кто вдруг знает, как устроить автосвойства через CodeDom — подскажите, я сделаю.
Сдается мне лучше вообще не использовать CodeDom.
Можно попробовать заменить CodeDom на CCI AST.
Но еще лучше просто генерировать текст. Например, тем же T4.
CodeDom обижен природой. Тут уже ничего не поделаешь.
В качестве затычки можешь просто использовать CodeSnippetXxx для подстановки текста в нужное место.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, koandrew, Вы писали:
K>Откровенно говоря, я не вижу особого смысла заниматься украшательством автогенерённого кода, ибо он не предназначен для ручной правки... И CodeDom я выбрал по двум причинам — легкость переключения языка, на котором генерится код, и более-менее вменяемая и, что самое главное, готовая объектная модель.
Ты ошибся только в двух предположениях. Она не готовая и не вполне вменяемая.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, IT, Вы писали:
IT>Автосвойства полезны как раз для того, чтобы лишний раз в такой код не заходить. Маппинг на поля, как я понимаю, вообще не возможен.
Ээээ... Товарисч, не пристало вам такую пургу нести! В мсиле автосвойств нет как ложки в матрице. Эффекта "незахождения отладчика в свойство" компилятор шарпа добивается путем добавления к коду свойств атрибутов System.Runtime.CompilerServices.CompilerGeneratedAttribute. Того же эффекта можно достичь добавив атрибут System.Diagnostics.DebuggerNonUserCode.
IT>Сложно что либо сказать. Часто бывает, что выбор простого, но не гибкого решения в дальнейшем оборачивается редкостным гемором и вся задача сводится в дальнейшем к борьбе с этой негибкостью и решение очень быстро превращается из простого в сложное и запутанное.
+1
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, IT, Вы писали:
K>>Сейчас перечитал — ты имеешь ввиду генерацию публичных полей вместо свойств? Мне всегда казалось это очень плохим стилем
IT>Что именно в этом плохого?
Как же в МС сказали, что это плохо. Значит...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, Dog, Вы писали:
Dog>Хоть можно будет шаблоны править по ходу.
Ну, вот это будет вызвать проблемы. Ты же их будешь локально править. Если потом и автор их поправит, то будет тебе работа по синхронизации. При некотором количестве различий проще будет твои правки выбросить.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, VladD2, Вы писали:
IT>>Автосвойства полезны как раз для того, чтобы лишний раз в такой код не заходить. Маппинг на поля, как я понимаю, вообще не возможен.
VD>Ээээ... Товарисч, не пристало вам такую пургу нести! В мсиле автосвойств нет как ложки в матрице. Эффекта "незахождения отладчика в свойство" компилятор шарпа добивается путем добавления к коду свойств атрибутов System.Runtime.CompilerServices.CompilerGeneratedAttribute. Того же эффекта можно достичь добавив атрибут System.Diagnostics.DebuggerNonUserCode.
Товарисч, вам бы спуститься с небес на ... Нет, точнее выйти из сумрака низкоуровневого кода и атрибутов компилятора в обычный мир. После этого можно будет написать код с использованием автосвойств и попробовать войти в него отладчиком.
Кстати, не уверен, что CompilerGeneratedAttribute приводит к игнорирования кода отладчиком. Хотя всё может быть. Тем не менее самому отладчику глубоко плевать как на CompilerGeneratedAttribute, так и на DebuggerNonUserCode вместе с DebuggerStepThrough. Отладчик ходит по тому коду, по которому ему сказал ходить компилятор, не больше и не меньше.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, VladD2, Вы писали:
VD>Сдается мне лучше вообще не использовать CodeDom.
VD>Можно попробовать заменить CodeDom на CCI AST. VD>Но еще лучше просто генерировать текст. Например, тем же T4.
VD>CodeDom обижен природой. Тут уже ничего не поделаешь.
Ну фиг его знает. Я стал его использовать в основном для того, чтобы облегчить переход на другие языки (для N уже есть провайдер? )...
VD>В качестве затычки можешь просто использовать CodeSnippetXxx для подстановки текста в нужное место.
Здравствуйте, VladD2, Вы писали:
VD>Ты ошибся только в двух предположениях. Она не готовая и не вполне вменяемая.
Мой опыт свидетельствует об обратном. А тот факт, что не любой код можно взаимно однозначно отобразить на CodeDom-модель, если подумать, следует из языковой независимости данной модели. Тем не менее, работать с ней довольно удобно. И уж точно она уже готовая и уже работает
Не факт, что изобретение своей модели является лучшим решением (что-то мне подсказывает, что в итоге выйдет нечто подобное CodeDom'у). Можно конечно соорудить некий языково-независимый DSL (CodeDom — это тоже DSL, но он увиверсален), для которого потом понаписать трансляторы в нужные целевые языки, тогда, возможно, удастся заимплементить всё необходимое в нём (в т.ч. и автосвойста), но, как это обычно бывает, это только вопрос времени, когда мы упрёмся в ограничения, вызванные специализацией. Всё-таки я верю, что CodeDom дизайнили товарищи с опытом побольше моего, и шанс нарваться на что-то нереализуемое там меньше...
Далее, тут есть ещё одна проблема. Дело в том, что понятие "красивый код" субъективно по определению, и потому я опасаюсь потока фидбека а-ля "сделайте скобочку на предудущей/следующей строке", "используйте пробелы/табы для форматирования" и тому подобную ерунду, которую гораздо проще сделать с помощью решарпера или ещё какого-нить средства форматирования кода. У меня есть мысль задействовать R# при его наличии для пост-процессинга снегерённого кода, но то, что предложили
разработчики, мне кажется чрезмерно замороченным...
Хотя, конечно, я могу быть не прав. Если объём предложений об отказе от CodeDom будет продолжать поступать — ну чтож, переделаю. Благо я являюсь сторонником SRP и кодогенерация чётко отделена от остальных частей, а потому может быть независимо переписана.
Здравствуйте, IT, Вы писали:
IT>Кстати, не уверен, что CompilerGeneratedAttribute приводит к игнорирования кода отладчиком. Хотя всё может быть. Тем не менее самому отладчику глубоко плевать как на CompilerGeneratedAttribute, так и на DebuggerNonUserCode вместе с DebuggerStepThrough. Отладчик ходит по тому коду, по которому ему сказал ходить компилятор, не больше и не меньше.
Уверен? Что-то я не помню, чтобы в немерле была спец-обработка по поводу DebuggerNonUserCode, вроде как он работает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, koandrew, Вы писали:
K>Ну фиг его знает. Я стал его использовать в основном для того, чтобы облегчить переход на другие языки (для N уже есть провайдер? )...
Есть. Но на мой взгляд здесь текстовый T4 был бы более подходящим решением.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, koandrew, Вы писали:
K>Всё-таки я верю, что CodeDom дизайнили товарищи с опытом побольше моего, и шанс нарваться на что-то нереализуемое там меньше...
Не КодДом проектировали какие-то индусы под сериализатор в ВинФормсах. От того он и такой недоделанный.
То что он абстрагирован от языка (т.е. является AST в полном смысле этого слов) — это да. Но все же он дико не удобен и не гибок.
K>Далее, тут есть ещё одна проблема. Дело в том, что понятие "красивый код" субъективно по определению, и потому я опасаюсь потока фидбека а-ля "сделайте скобочку на предудущей/следующей строке", "используйте пробелы/табы для форматирования" и тому подобную ерунду, которую гораздо проще сделать с помощью решарпера или ещё какого-нить средства форматирования кода. У меня есть мысль задействовать R# при его наличии для пост-процессинга снегерённого кода, но то, что предложили
разработчики, мне кажется чрезмерно замороченным...
Кстати, не стоит называть РеШарпер R#. У нас есть свой R#.
Что по поводу форматирования, то это как раз не так важно. А вот то что за код будет генерировать — это важно. И тут текстовый генератор был бы более удобен, по моему.
K>Хотя, конечно, я могу быть не прав. Если объём предложений об отказе от CodeDom будет продолжать поступать — ну чтож, переделаю. Благо я являюсь сторонником SRP и кодогенерация чётко отделена от остальных частей, а потому может быть независимо переписана.
Если не откажешься от самого КодДома, то возмоно лучше взять его аналог из CCI. Он вроде как совместим с КодДомом но расширен для удобства применения. Для него имеется генерация форматированного кода на шарпе и васике (если не ошибаюсь).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, VladD2, Вы писали:
VD>Уверен? Что-то я не помню, чтобы в немерле была спец-обработка по поводу DebuggerNonUserCode, вроде как он работает.
Да, мои сведения говорят о том же. Этим делом рулит галка Debug Non-User Code иил что-то вроде того в настройках. Методы, помеченные DebuggerStepThroughAttribute, дебаггер проскакивает, если только не установить бряк внутри (вроде). В принципе, могу добавить навешивание этого атрибута к сгенерённый код — делов-то на минуту...
Здравствуйте, VladD2, Вы писали:
VD>Не КодДом проектировали какие-то индусы под сериализатор в ВинФормсах. От того он и такой недоделанный. VD>То что он абстрагирован от языка (т.е. является AST в полном смысле этого слов) — это да. Но все же он дико не удобен и не гибок.
Может и так — не знаю
VD>Кстати, не стоит называть РеШарпер R#. У нас есть свой R#.
VD>Что по поводу форматирования, то это как раз не так важно. А вот то что за код будет генерировать — это важно. И тут текстовый генератор был бы более удобен, по моему.
Я очень опасаюсь того, что юзеры начнут наезжать на тему codestyle и править шаблоны руками. Тогда придётся в инсталлере этот момент как-то обрабатывать, а как — я пока понятия не имею...
VD>Если не откажешься от самого КодДома, то возмоно лучше взять его аналог из CCI. Он вроде как совместим с КодДомом но расширен для удобства применения. Для него имеется генерация форматированного кода на шарпе и васике (если не ошибаюсь).
А вот за это спасибо, посмотрю...
Здравствуйте, VladD2, Вы писали:
VD>Есть. Но на мой взгляд здесь текстовый T4 был бы более подходящим решением.
Как я уже сказал выше, надо будет придумать, как разруливать ручные модификации этих шаблонов при обновлении. Ну и какой-то простой AST Model надо будет сварганить поверх этого дела — чтобы сохранить языковую независимость..
Здравствуйте, VladD2, Вы писали:
IT>>Кстати, не уверен, что CompilerGeneratedAttribute приводит к игнорирования кода отладчиком. Хотя всё может быть. Тем не менее самому отладчику глубоко плевать как на CompilerGeneratedAttribute, так и на DebuggerNonUserCode вместе с DebuggerStepThrough. Отладчик ходит по тому коду, по которому ему сказал ходить компилятор, не больше и не меньше.
VD>Уверен? Что-то я не помню, чтобы в немерле была спец-обработка по поводу DebuggerNonUserCode, вроде как он работает.
Она может быть в емите.
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, koandrew, Вы писали:
K>Как я уже сказал выше, надо будет придумать, как разруливать ручные модификации этих шаблонов при обновлении.
Не надо это разруливать. Помечай файлы как read-only и тот кто их поправит будет сам себе злобный буратина.
K>Ну и какой-то простой AST Model надо будет сварганить поверх этого дела — чтобы сохранить языковую независимость..
Это, да.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: [ANN] Надстройка к студии для генерации классов к Li
Dog>>Хоть можно будет шаблоны править по ходу. VD>Ну, вот это будет вызвать проблемы. Ты же их будешь локально править. Если потом и автор их поправит, то будет тебе работа по синхронизации. При некотором количестве различий проще будет твои правки выбросить.
Значит надо добавить возможность использовать свои шаблоны. Можно скопировать стандартный, поправить и указать какой использовтаь. Т4 хоть легко читать и править можно.
Re[9]: [ANN] Надстройка к студии для генерации классов к Lin
VD>>Что по поводу форматирования, то это как раз не так важно. А вот то что за код будет генерировать — это важно. И тут текстовый генератор был бы более удобен, по моему. K>Я очень опасаюсь того, что юзеры начнут наезжать на тему codestyle и править шаблоны руками.
И это правильно
K> Тогда придётся в инсталлере этот момент как-то обрабатывать, а как — я пока понятия не имею...
А можно добавить в конфиг какой шаблон используется ?
Re: [ANN] Надстройка к студии для генерации классов к Linq2B
K>Краткая инструкция по использованию: K>Правый щелчок на c# проекте -> Add New Item... -> BLToolkit Settings File -> Назови его как-нить(это имя будет частью имени контекста — SomethingDbContext) -> OK
что то не могу найти этот файл (BLToolkit Settings File), когда создаю web site
Re[2]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, kkolyan33, Вы писали:
K>что то не могу найти этот файл (BLToolkit Settings File), когда создаю web site
Этот пункт доступен только для C# Library проектов и Console Application. Ибо мне кажется неправильным пихать DAL в presentation layer. Но "если очень хочется", то есть способ — правый клик на проекте -> Add database definition, затем переименовать файл как вам нужно. Дальше всё как обычно...
Здравствуйте, koandrew, Вы писали:
K>Этот пункт доступен только для C# Library проектов и Console Application. Ибо мне кажется неправильным пихать DAL в presentation layer.
Думаю, стоит ослабить это ограничение, не путай layer и tier — зачастую несколько layer'ов вполне себе нормально сосуществуют в пределах одного проекта.
Re[3]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, koandrew, Вы писали:
K>>что то не могу найти этот файл (BLToolkit Settings File), когда создаю web site K>Этот пункт доступен только для C# Library проектов и Console Application. Ибо мне кажется неправильным пихать DAL в presentation layer.
Их всё равно больше.
Если нам не помогут, то мы тоже никого не пощадим.
Re: [ANN] Надстройка к студии для генерации классов к Linq2B
Здравствуйте, Flem1234, Вы писали:
F>Студия стала вылетать. Подозрение на этот плагин. У кого-нибудь есть подобные проблемы?
Установлен уже 2 недели, никаких проблем
... << RSDN@Home 1.2.0 alpha 4 rev. 1427>>
The life is relative and reversible.
Re[3]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, senglory, Вы писали:
S>Здравствуйте, koandrew, Вы писали:
K>>Краткая инструкция по использованию: K>>Правый щелчок на c# проекте -> Add New Item... -> BLToolkit Settings File
S>Нифига не получается. VS 2008 SP1. Нет такого "BLToolkit Settings File" в списке в Add New Item
В догонку: запуск студии через devenv /log C:\PRJ\logfile.txt дал вот что:
Здравствуйте, senglory, Вы писали:
S>Нифига не получается. VS 2008 SP1. Нет такого "BLToolkit Settings File" в списке в Add New Item
Странно. В логе ничего особенного не нашёл (эти ошибки не носят фатального характера)... Судя по наличию пакета в списке "About", пакет был успешно загружен.
1. Укажите, о каком именно типе проекта идёт речь? Пока этот дополнительный пункт показывается только для проектов типа C# Class Library и C# Console Application. Поддержка VB.NET (и, возможно, других типов проектов) есть в планах, но сейчас я занят некоторой инфраструктурной работой, необходимой для реализации некоторых запрошенных фич. Если всё пойдёт по плану, то к концу недели выкачу на ваш суд очередную версию с новыми фичами.
2. По правой кнопке на проекте должны появиться два новых пункта меню (Add Database Definition и Update Database Definition). Есть ли они у вас и, если есть, в каком состоянии (включены/выключены)?
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, senglory, Вы писали:
S>>Нифига не получается. VS 2008 SP1. Нет такого "BLToolkit Settings File" в списке в Add New Item
K>Странно. В логе ничего особенного не нашёл (эти ошибки не носят фатального характера)... Судя по наличию пакета в списке "About", пакет был успешно загружен. K>1. Укажите, о каком именно типе проекта идёт речь? Пока этот дополнительный пункт показывается только для проектов типа C# Class Library и C# Console Application. Поддержка VB.NET (и, возможно, других типов проектов) есть в планах, но сейчас я занят некоторой инфраструктурной работой, необходимой для реализации некоторых запрошенных фич. Если всё пойдёт по плану, то к концу недели выкачу на ваш суд очередную версию с новыми фичами. K>2. По правой кнопке на проекте должны появиться два новых пункта меню (Add Database Definition и Update Database Definition). Есть ли они у вас и, если есть, в каком состоянии (включены/выключены)?
K>Спасибо!
Скачал обновление, поставил VS SDK. Пункт Add database definition появился, но при попытке его вызвать (проект C# Class Lib) получаю приаттаченое сообщение
ЧТо не так теперь?
Re[4]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, senglory, Вы писали:
S>Скачал обновление, поставил VS SDK. Пункт Add database definition появился, но при попытке его вызвать (проект C# Class Lib) получаю приаттаченое сообщение
S>ЧТо не так теперь?
Похоже на косяк инсталлятора Инсталлятор записывает некоторую конфигурационную инфу в ветку реестра HKLM\Software\BLToolkitUtils.VSPackage, которая затем используется расширением в работе. Не могли бы вы проверить наличие данной ветки и, если она есть, привести здесь её содержимое? Также нужно будет знать путь, по которому у вас установлен пакет, и разрядность вашей ОС.
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, senglory, Вы писали:
S>>Скачал обновление, поставил VS SDK. Пункт Add database definition появился, но при попытке его вызвать (проект C# Class Lib) получаю приаттаченое сообщение
S>>ЧТо не так теперь?
K>Похоже на косяк инсталлятора Инсталлятор записывает некоторую конфигурационную инфу в ветку реестра HKLM\Software\BLToolkitUtils.VSPackage, которая затем используется расширением в работе. Не могли бы вы проверить наличие данной ветки и, если она есть, привести здесь её содержимое? Также нужно будет знать путь, по которому у вас установлен пакет, и разрядность вашей ОС.
K>Спасибо!
Винда — 32битная XP Prof SP3, патченая всем свежим от MS. В этой ветке у меня вот что:
Здравствуйте, ailin, Вы писали:
A>Тул выглядит отлично!
A>Хотелось бы иметь возможность его использовать в случае если схема таблицы отличается от дефолтной(dbo).
Спасибо. Я в курсе этой ошибки и починю её к следующему релизу. Обещать сроки не буду, ибо я уже однажды пообещал, но выполнить не смог ввиду занятости на основной работе, но думаю, что в крайнем случае к концу следующей недели сделаю (у нас будет long weekend)...
Кстати, я планирую таблицы из разных схем поместить в разные неймспейсы. Может, у вас есть какие-то другие мысли на этот счёт? Если да — давайте обсудим, пока ещё не поздно
К этому релизу уже сделано или планирую сделать следующее:
— per-table settings system. Это больше базовый компонент, необходимый для реализации целого ряда из запланированных фич.
— Foreign key associations. Генерация атрибутов [Association]
— schemas support. Это то, о чём мы говорили выше.
Далее по плану переделка кодогенерации с CodeDom на использование темплейтов. Но это походу будет довольно серьёзным куском работы, посему обещать его пока не буду
Также хотелось бы чтобы namespace(ns), куда помещаются классы для таблиц и сам контекст можно было либо:
— учитывалась вложенность папок, где лежит *.dbdef (сейчас ns соответствует ns сборки)
— задать в глобально в настройках
Нельзя ничего сказать о глубине лужи, пока не попадешь в нее.
Re[4]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, ailin, Вы писали:
A>Также хотелось бы чтобы namespace(ns), куда помещаются классы для таблиц и сам контекст можно было либо: A>- учитывалась вложенность папок, где лежит *.dbdef (сейчас ns соответствует ns сборки)
Здравствуйте, koandrew, Вы писали:
K>В общем, хочу представить вашему вниманию свой проект для облегчения работы с Linq2BLT, целью которого в основном лишить Linq2SQL своего последнего (ИМХО) преимущества — наличия генератора классов.
А когда ты планируешь добавить поддержку Оракла?
Re[3]: [ANN] Надстройка к студии для генерации классов к Lin
K>К этому релизу уже сделано или планирую сделать следующее: K>- per-table settings system. Это больше базовый компонент, необходимый для реализации целого ряда из запланированных фич. K>- Foreign key associations. Генерация атрибутов [Association] K>- schemas support. Это то, о чём мы говорили выше.
еще не плохо бы добавить опцию при генерации таблиц что-бы все классы были унаследованны от EditableObject<T> здесь инфа как правильно должен выглядить класс.
... << RSDN@Home 1.2.0 alpha 4 rev. 1465>>
The life is relative and reversible.
Re[2]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, Andy77, Вы писали:
A>А когда ты планируешь добавить поддержку Оракла?
Когда найдётся желающий помочь мне с этим делом Сам я в оракле полный ноль Если желающих не найдётся — займусь сам, когда закончу с основной функциональностью и окончательно утрясу интерфейс SchemaProvider'ов...
Здравствуйте, Holms, Вы писали:
H>еще не плохо бы добавить опцию при генерации таблиц что-бы все классы были унаследованны от EditableObject<T> H>здесь инфа как правильно должен выглядить класс.
Ты бы писал сразу в трекер — тогда я точно не забуду С английским у тебя проблем быть вроде не должно
Здравствуйте, ailin, Вы писали:
A>Также хотелось бы чтобы namespace(ns), куда помещаются классы для таблиц и сам контекст можно было либо: A>- учитывалась вложенность папок, где лежит *.dbdef (сейчас ns соответствует ns сборки) A>- задать в глобально в настройках
Здравствуйте, koandrew, Вы писали:
K>Когда найдётся желающий помочь мне с этим делом Сам я в оракле полный ноль Если желающих не найдётся — займусь сам, когда закончу с основной функциональностью и окончательно утрясу интерфейс SchemaProvider'ов...
Кстати, насчет SchemaProvider-ов, если посмотришь Janus\Core\DataSchemaManagement то там уже кто-то начал делать абстракцию для схем БД. Я еще раньше предложил добавить такую фичу в BLToolkit, но AndrewVK сказал что не надо, теперь вот каждый по своему делает, обидно.
... << RSDN@Home 1.2.0 alpha 4 rev. 1465>>
The life is relative and reversible.
Re: [ANN] Надстройка к студии для генерации классов к Linq2B
От:
Аноним
Дата:
29.03.10 12:56
Оценка:
bltutilsvspackage не совместим с Visual Studio Express 2008 SP1 Eng.
Посмотрел, ушёл писать свой.
Уверен что отсутствие штатной IDE серьёзно снижает популярность BLToolkit.
Re[2]: [ANN] Надстройка к студии для генерации классов к Lin
Да ради бога — лизенция на код MIT, то есть, говоря по-русски, "делайте с ним что хотите" Если вставите мой копирайт, буду благодарен, нет — так нет
Только должен предупредить, что этот код будет расширен (добавится поддержка Foreign Key'ев и некоторые другие вещи) для удовлетворения нужд моего расширения, также со временем будет добавлена поддержка отличных от MSSQL СУРБД. Если вам это не надо — тогда просто копируйте нужный вам код, иначе возможно имеет смысл сделать ссылку (как я сделал с bltoolkit'ом)...
Сделана корректная поддержка разных схем в одной БД
При формирования базового пространства имён для сгенерированных классов теперь учитывается вложенность папок, где лежит *.dbdef
Частично сделана поддержка генерации атрибутов Association (см. примечание ниже)
Добавлена поддерка извлечения foreign key в SchemaProvider для реализации предыдущей фичи
Реализовано автоматическое сохранение проекта по окончании генерации кода
Реализовано отображение прогресса генерации в строке состояния студии (пока местами кривовато, но я это поправлю, как руки дойдут) и добавлено логирование происходящего в окно Output — General.
Прочие багфиксы, мелкие и не очень
Примечание по поводу ассоциаций:
Самостоятельно не осилил продумать все детали этой фичи, посему взываю к Vox populi В частности, интересует следующее:
1. Как различить отношения "один-к-одному" и "один-ко-многим"? Это необходимо для выбора между генерацией свойства типа "список элементов типа целевой таблицы" и свойством типа "целевая таблица".
2. Как решить вопрос о параметре CanBeNull?
3. По каким правилам генерировать имя этого свойства? Сейчас я родил некую эмпирику, на которую можно посмотреть тут: http://code.google.com/p/bltutilsvspackage/source/browse/trunk/BLToolkitUtils.VSPackage/CodeGeneration/TablesCodeGenerator.cs#138 , метод GenerateFKPropertyName. Просьба высказать своё мнение по поводу того, как это сделать правильнее
Ну и, как всегда, о багах просьба писать сюда или прямо в трекер, а лучше и туда, и сюда одновременно
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, Flem1234, Вы писали:
F>>Можно ли добавить CodeDom.Compiler.GeneratedCode(тут название и версия)], а то у меня FxCop ругается? Спс.
K>А на что именно его нужно вешать?
На класс и на члены, но на партиал классы его не следует использовать, так что для них только на члены.
Вот тут немного про это написано.
Re[4]: [ANN] Надстройка к студии для генерации классов к Lin
Здравствуйте, Flem1234, Вы писали:
F>На класс и на члены, но на партиал классы его не следует использовать, так что для них только на члены. F>Вот тут немного про это написано.
Сделал. Забирайте 38ю ревизию. Посмотрите и проверьте, всё ли так сделано — у меня FxCop'а под рукой нет...