Таким образом, вероятно, ваш ключ для таблицы контактов теперь будет (сгенерированный уникальный идентификатор + идентификатор редакции).
И между поставщиком и контактом будут установлены отношения FK, использующие только уникальный идентификатор. Так что это будет отображение 1: много.
И простой запрос на получение текущего контакта станет vendor.Contacts.OrderByDescending(c => c.RevisionId).First()
, или вы можете получить всю историю изменений для этого контакта, если хотите.
ИЛИ вы пытаетесь отследить, как этот контакт изменился с течением времени (то есть это был человек А, а не человек Б)? то есть нужно ли для самого отношения иметь RevisionId?
Или, возможно, вы пытаетесь отследить обе ревизии отношения И ревизии контакта, на который она указывает?
vendor.VendorContacts.OrderBy...().First().Contact.OrderBy...().First()
Это может стать довольно уродливым быстро!