Bidirectional 1-1 relation

Bidirectional 1-1 relation

The bidirectional relationship between a Person and its PhoneNumbers clearly is an 1:m relationship, as indicated by the PhoneNumbers property's type – ObjectList<PhoneNumber>. Bidirectional 1:1 relationships are declared more or less in the same way, with one important difference. You must specify which of the two ends , or tables, holds the foreign key. Here is a 1:1 relationship between a company and its president. Note the ContainsKey parameter in the Company's [ DBBidirectionalRelation ] attribute:

public class Company : DomainObject { // The 'Company' table will hold the foreign key [DBBidirectionalRelation ("PresidentOf", ContainsKey = true)] [Mandatory] public virtual Person President { get; set; } } public class Person : DomainObject { [DBBidirectionalRelation ("President")] [Mandatory] public virtual Company PresidentOf { get; set; } }