Да, отношения между объектами одного и того же класса поддерживаются, но внешние атрибуты и обратные свойства должны быть явно указаны в атрибуте свойства отношений, потому что система обнаружения ошибается, поскольку существуют два отношения с одним типом.
Этот пример извлечен из проекта readme:
public class TwitterUser {
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
[ManyToMany(typeof(FollowerLeaderRelationshipTable), "LeaderId", "Followers",
CascadeOperations = CascadeOperation.CascadeRead)]
public List<TwitterUser> FollowingUsers { get; set; }
// ReadOnly is required because we're not specifying the followers manually, but want to obtain them from database
[ManyToMany(typeof(FollowerLeaderRelationshipTable), "FollowerId", "FollowingUsers",
CascadeOperations = CascadeOperation.CascadeRead, ReadOnly = true)]
public List<TwitterUser> Followers { get; set; }
}
// Intermediate class, not used directly anywhere in the code, only in ManyToMany attributes and table creation
public class FollowerLeaderRelationshipTable {
public int LeaderId { get; set; }
public int FollowerId { get; set; }
}
Как вы можете видеть здесь, у нас есть много ко многим между пользователями Twitter.В вашем случае это будет один ко многим, поэтому вам не понадобится промежуточная таблица и вам понадобится внешний ключ (например, ManagerId
) в вашем классе Person
.