Я хотел бы смоделировать следующие отношения.
[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;
}
}
Это все формирует наследование основного класса ... базовая форма, а затем некоторые конкретные формы
..TerminationForm, другая форма ... и т.д ...
А потом я собирался повесить несколько других разделов форм на каждую дочернюю форму. Я смоделировал эти дочерние формы как [OneToOne]
т.е. если TerminationForm аналогичен FormOne выше ... У меня есть "Штатное расписание" под ним ... это ссылка ... и ее взаимная ссылка (Примечание ... Я также перенес некоторые свойства Staffing в абстрактную базу, потому что у меня есть TerminationStaffing и оставить персонал)
[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
Когда AR создает схему .. она правильно связывает TerminationForm с MasterForm через отношения, которые ограничивают их Первичный ключ ...
Однако, хотя таблица TerminationStaffing включает в себя MasterFormId, я не вижу созданного отношения. Должен ли я беспокоиться об этом? Может быть, я могу просто добавить это после, но я был удивлен.
Я думал об использовании [BelongsTo] для TerminationStaffing, но затем какое отношение имеет отношение к TerminationForm (отношение один к одному .. не один ко многим)
Я далеко от базы?