我想模拟以下关系。Castle ActiveRecord OneToOne和JoinedBase/Key一起创建没有SQL关系
[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”..这是链接..和它的相互链接(注意...我也将一些Staffing属性拉入抽象基础,因为我有TerminationStaffing和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
当AR创建架构..它正确地涉及TerminationForm通过这限制了它们的主键关系型模...
然而,即使TerminationStaffing表包括MasterFormId我不”看看创建的关系。我应该担心这个吗?也许我可以将它添加后,但我很惊讶。
我想过使用[属于关联]上TerminationStaffing但是随后在TerminationForm(的关系是一对一的..不一对多)
我是大错特错什么关系呢?