Je souhaite modéliser la relation suivante.Castle ActiveRecord OneToOne et JoinedBase/Key ensemble, aucune relation SQL n'a été créée
[JoinedBase]
MasterForm{
Guid MasterFormId {get;set;}
/* some base properties like modifiedBy etc... */
}
[ActiveRecord]
TerminationForm{
[PrmaryKey(Foreign)]
Guid MasterFormId {get; set;}
/* Some more properties specific to terminations */
}
[ActiveRecord("TermStaffing")]
public class TermStaffing : StaffingBase, ITermStaffing
{
}
public abstract class StaffingBase : EntityBase<StaffingBase>, IStaffingBase
{
protected StaffingBase()
{
}
protected StaffingBase(string createdBy)
{
this.CreatedBy = createdBy;
}
[PrimaryKey(PrimaryKeyType.Foreign)]
public virtual Guid MasterFormId
{
get; set;
}
}
Cette toute forme principale d'héritage de classe ... sous forme de base et certaines formes spécifiques ..TerminationForm, une autre forme ... etc ...
Et puis j'allais accrocher quelques-uns d'autres sections de formulaire sur chaque formulaire enfant. J'ai modélisé ces formes enfant en tant que [OneToOne]
I.e. si TerminationForm est analogue à FormOne ci-dessus .. J'ai "Staffing" ci-dessous .. c'est le lien .. et son lien réciproque (Note ... J'ai également retiré quelques propriétés Staffing dans une base abstraite parce que j'ai TerminationStaffing et LeaveStaffing)
[OneToOne(MapType = typeof(TermStaffing), Cascade = CascadeEnum.All, PropertyRef = "MasterFormId", ForeignKey = "FK_TerminationFormsStaffing", Constrained = true)]
public virtual ITermStaffing Staffing
[OneToOne(MapType = typeof(TerminationForm), PropertyRef = "MasterFormId", ForeignKey = "FK_StaffingTerminationForms", Constrained = true)]
public virtual ITerminationForm TerminationForm
Lorsque AR crée le schéma .. il se rapporte bien à TerminationForm Masterform par la relation qui limite leur clé primaire ...
Cependant, même si la table TerminationStaffing comprend un MasterFormId Je ne t voir la relation créée. Devrais-je m'inquiéter à ce sujet? Peut-être que je peux juste l'ajouter après mais j'ai été surpris.
Je pensais à l'aide de [Appartient] sur TerminationStaffing mais quelle relation va dans TerminationForm (la relation est un à un .. pas un à plusieurs)
Suis-je la base loin?