将多个一对一关系建模到同一个表(sqlite-net-extensions)的最佳方法是什么?我正在寻找这样的解决方案:
Class WayBill
{
[PrimaryKey, AutoIncrement]
public int Id {get; set;}
[ForeignKey(typeof(Organization ))]
public int ConsignerId {get; set;}
[OneToOne]
public Organization Consigner {get; set;}
[ForeignKey(typeof(Organization ))]
public int ConsigneeId {get; set;}
[OneToOne]
public Organization Consignee {get; set;}
}
Class Organization
{
[PrimaryKey, AutoIncrement]
public int Id {get; set;}
public string Name {get; set;}
}
显然,上述方法行不通。
我也考虑过其他选择:
创建一个捕获组织角色的表(WayBillOrganization):Waybill -->> WayBillOrganization --> Organization
将所需的反向 OneToMany 属性放入组织中。
手动处理事情(即仅在 WayBill 类中存储主键并单独加载组织)。
选项 2. 是我想避免的。组织与许多其他类别相关(在我的示例中没有),即使在运单的情况下,还有一些我没有包含在示例中的关系(承运人、货物支付方、货运代理等)。另外,我宁愿只在需要导航时才使用逆属性(例如,我不使用组织来查找运单,所以逆属性只是一个额外的负担。)
选项 3. 也没有那么吸引人。
所以选项 1. 似乎是要走的路。但在去那里之前,我想知道我的示例中的完美世界解决方案是否确实是不可能的。
所以,我的问题是:有没有一种方法可以在没有明确声明逆属性的情况下对多个单向OneToOne 关系进行建模?