SQLite-Net Extensions |外键引用同一实体

时间:2018-06-08 10:40:31

标签: sqlite xamarin.forms crud sqlite-net

在使用SQLite-Net Extensions在外键引用同一实体(自联接)的情况下将数据保存在本地数据库中时,我遇到了一个问题。

示例 - 员工和经理。每个员工都有经理,经理也是员工。在这种情况下,我面临着保存数据的问题。如果您能提供一些见解,将会非常有帮助。这个扩展是否支持这种关系?

1 个答案:

答案 0 :(得分:0)

是的,支持同一类对象之间的关系,但必须在关系属性属性中显式指定外键和反向属性,因为发现系统会错误,因为存在两个具有相同类型的关系。

此示例摘自项目自述文件:

public class TwitterUser {
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }

    public string Name { get; set; }

    [ManyToMany(typeof(FollowerLeaderRelationshipTable), "LeaderId", "Followers",
        CascadeOperations = CascadeOperation.CascadeRead)]
    public List<TwitterUser> FollowingUsers { get; set; }

    // ReadOnly is required because we're not specifying the followers manually, but want to obtain them from database
    [ManyToMany(typeof(FollowerLeaderRelationshipTable), "FollowerId", "FollowingUsers",
        CascadeOperations = CascadeOperation.CascadeRead, ReadOnly = true)]
    public List<TwitterUser> Followers { get; set; }
}

// Intermediate class, not used directly anywhere in the code, only in ManyToMany attributes and table creation
public class FollowerLeaderRelationshipTable {
    public int LeaderId { get; set; }
    public int FollowerId { get; set; }
}

正如你在这里看到的,Twitter用户之间有多对多的关系。在您的情况下,它将是一对多的,因此您不需要中间表,并且您将需要ManagerId类中的外键(例如Person)。