Ответ 1
Я исхожу из вашего использования PropertyRef в примере кода, что два столбца не образуют составной первичный ключ. Если это так, то вам не повезло, потому что свойство-ref может принимать только одно свойство. Судя по комментариям в проблеме NH-1722, эта функциональность, по-видимому, доступна в Hibernate, но не была перенесена в NHibernate.
Обновление: Добавленная вами схема выглядит как много-ко-многим, с дополнительными отношениями данных между Task и Assignment. TaskProgress - таблица ссылок между Task и Assignment. Если у TaskProgress не было дополнительного поля UserId, вы могли бы моделировать это как простое для многих. Поскольку таблица ссылок имеет дополнительные данные, она становится немного сложнее.
Многие-ко-многим с дополнительными данными обычно моделируются путем создания объекта, представляющего таблицу связывания (TaskProgress), и моделирования отношения как двух отношений "один-ко-многим". То есть Task и Assignment имеют отношения "один ко многим" с TaskProgress. TaskProgress имеет свойства для задачи, назначения и пользователя.