Есть основная таблица аккаунты, которая включает различные сервисы.
Сервисы имеют соотношение к этому аккаунту как 1 к 0/1,
т.е. Аккаунт должен быть, а сервис - может быть, а может и не быть.
public class ApplicationUser : IdentityUser<long, VRSIdentityUserLogin, VRSIdentityUserRole, VRSIdentityUserClaim>
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public override long Id { get; set; }
public long Balance { get; set; }
public virtual ServiceEntity1 ServiceEntity{ get; set; }
public virtual ServiceEntity2 ServiceEntity{ get; set; }
}
Сервисы должны иметь данные привязанные к ним, некоторые один к одному, другие один ко многим.
public class ServiceEntity1
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public ApplicationUser User { get; set; }
public virtual Metrica ServiceMetrica{ get; set; }
public virtual List<ModuleService> ServiceModules{ get; set; }
}
public class Metrica
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long id { get; set; }
public virtual long ServiceEntityId { get; set; }
public virtual ServiceEntity1 ServiceEntity { get; set; }
}
Так же нужно, что бы ApplicationUser.Id был сгенерирован БД и использован в ServiceEntity1.Id, который в свою очередь является ключем для Metrica.ServiceEntityId