* adding extra fields to a database: at the moment I can map a
значение словаря для поля в
база данных, которая очень крутая, это
возможно в дозвуке? (или что-нибудь
подобное?)
FWIW: DynamicComponent(x => x.PropertyBag,
GetDynamicComponentPart); где
propertybag - это словарь.
Добавление полей довольно просто. Просто добавьте поле в таблицу, а затем заново сгенерируйте классы из шаблона T4.
Вы не получите никакого отображения, кроме базовых примитивных типов. Конечно, не словарь в поле.
* many to many relationships
Вам придется вносить пользовательские изменения в шаблон T4, чтобы получить какую-либо поддержку таблиц «многие ко многим». SubSonic обрабатывает их как любой другой стол.
Я сделал такие модификации, и они имеют ограниченную полезность.
* cascading saves/deletes
Только на стороне СУБД. То есть, если вы устанавливаете отношения внешнего ключа с каскадами. SubSonic не делает ничего этого.
* mapping a complex object to an xml or varchar(max) column (seralize
это в xml, очевидно)
Неа. Вы не получаете никакой поддержки, как это. Для вставки собственных конвертеров типов нет хуков расширяемости.
SubSonic - это совершенно другое поле, чем NHibernate. Я бы назвал NHib ORM, но я бы не назвал это SubSonic. Роб Конери, автор SubSonic, назвал бы это инструментом запросов.
Это очень упрощенно, что является его целью и силой (а также слабостью). Это помогает с запросами и модификациями строго типизированным способом. По сравнению с NHib или даже Entity Framework ему не хватает огромного количества функций и возможностей конфигурирования / расширяемости.
Я бы предостерег от перехода с NHib на SS, особенно если у вас уже есть какая-то функциональность, реализованная в NHibernate. Не то чтобы SS - плохой инструмент, но у него много ограничений.