В общем, я думаю, что это выглядит хорошо, и обычно хорошей идеей является создание моделей для ваших доменных объектов.
Я не рассматривал каждую строку кода, но одна вещь, которая привлекла мое внимание, - это конструкторы OrganisationViewModel. Я бы переписал это, используя:
public OrganisationViewModel() : this(new Organisation()) { }
public OrganisationViewModel(Organisation o)
{
Organisation = o;
InitCollections();
}
Это удаляет некоторый дублирующий код, так как вам не нужно вызывать InitCollections()
в обоих конструкторах. Конечно, это лишь незначительная деталь, и она не имеет ничего общего с общей идеей.