нашел решение, которое работает на меня. Достаточно добавить «ложное» свойство внешнего ключа в класс А, который не сопоставлен с базой данных. Это позволяет определить ассоциацию:
public class A
{
[Include]
[Association("Relation1","ComplexPropertyId","Id")]
public virtual ComplexProperty property {get;set;}
public virtual int ? ComplexPropertyId {get;set;}
}
Последнее, что нужно сделать, это установить ComplexPropertyId
вручную на стороне клиента после извлечения объектов из БД (отображения остаются такими же, как были).
public IQueryable<A> GetA()
{
var item = repository.Query<A>();
foreach(var a in item) a.ComplexPropertyId = a.ComplexProperty.Id;
return item;
}