Модель программирования для WPF более открыта и гибка, чем Windows Forms, но как ASP.NET MVC, требуется немного больше дисциплины с точки зрения корректной реализации шаблонов Model-View-ViewModel.
Мое первое приложение LOB с WPF закончилось как чрезвычайный failuire, потому что это был пожиратель ресурсов, который остановил очень низкокачественные ноутбуки моего конечного пользователя, стачивающиеся..., и это было в конечном счете потому что я просто lept в с WPF + LINQ to SQL и ожидаемый хороший результат... и это - то, куда WPF отличается так сильно от Windows Forms... В Windows Forms можно сойти с рук такая вещь. WPF намного более тяжел на ресурсах, чем Windows Forms, и если Вы не проектируете свое приложение, чтобы быть наклоном, Вы заканчиваете с гориллой за 800 фунтов.
не уклоняются от WPF... исследуют его. Но знайте, что приемлемые грехи кодирования Windows Forms не приведут к хорошим результатам в WPF. Они - существенно различные механизмы, которые предоставляют себя существенно различным шаблонам кодирования.
Последний Word: Если Вы действительно продолжаете WPF, выздоравливаете acquianted с виртуализацией данных для использования со списками и сетками. Что является простым ListItem с привязкой к данным, или GridCell заканчивает тем, что был значительным логическим + визуальный граф объектов в WPF, и если Вы не изучите, как виртуализировать, Вы, приложение не будет работать хорошо на больших наборах данных.
Factorygirl с момента обновления, и теперь включает обратные вызовы для решения этой проблемы. Посмотрите http://robots.thoughtbot.com/post/254496652/aint-no-calla-back-girl для получения дополнительной информации.
Прежде всего, я настоятельно рекомендую вам использовать has_many: through вместо habtm (подробнее об этом здесь ), поэтому вы получите что-то вроде:
Employment belongs_to :users
Employment belongs_to :companies
User has_many :employments
User has_many :companies, :through => :employments
Company has_many :employments
Company has_many :users, :through => :employments
После этого у вас будет ассоциация has_many с обеих сторон, и вы сможете назначить их в factory_girl так же, как вы это сделали.
У меня сработала установка ассоциации при использовании фабрики. Используя ваш пример:
user = Factory(:user)
company = Factory(:company)
company.users << user
company.save!