Похоже, вы просто хотите добавить таблицу свойств имя / значение.
Имеют одну таблицу, определяющую имя (например, ID, FIELDNAME, DESCRIPTION), а другую - значение (например, ID, NAME_FK, OBJECT_FK, VALUE).
Пользователь должен добавить новые строки в таблицу NAME, чтобы добавить новое свойство и добавить значения, добавив строки в таблицу VALUE, внешний ключ к таблице NAME и любой объект, к которому вы хотите присоединить его.
Ваше представление может затем запросить таблицу VALUE, связанную с OBJECT_FK, и использовать NAME_FK для ссылки на имя свойства.
Редактировать: NHibernate не будет видеть новые значения как фактические свойства, но если вы отобразите их как коллекции, вы сможете запросить и отфильтровать, используя ICriteria:
IList<MyProp> props = session
.CreateCriteria(typeof(MyProp))
.Add(Expression.Eq("ObjectName", "Widget"))
.Add(Expression.Eq("Name", "Size"))
.List<MyProp>();