当一个poco/表具有复合主键时,如何定义引用

本文关键字:引用 定义 何定义 一个 poco 复合 | 更新日期: 2023-09-27 17:59:12

考虑到这里的文档,您可以在pocos中定义外键关系,如给定的示例:

public class Customer
{
    [References(typeof(CustomerAddress))]
    public int PrimaryAddressId { get; set; }
    [Reference]
    public CustomerAddress PrimaryAddress { get; set; }
}

然而,假设我的CustomerAddresspoco类实际上必须这样定义,因为很久很久以前就有人决定这样设计表了。

public class CustomerAddress
{
    [PrimaryKey]
    public int Id_1 { get; set; }
    [PrimaryKey]
    public string Id_2 { get; set; }
}

如何使用CustomerAddress中定义的复合键为Customer类中的PrimaryAddress属性正确定义[Reference]

当一个poco/表具有复合主键时,如何定义引用

您不能使用依赖它的API(但您仍然可以使用SELECT)请参阅OrmLite限制。

我对一个无法修改的遗留数据库也有同样的问题(因为另一个项目和我的项目共存)。所以我删除了主键,然后在数据库(PK)上创建了一个新的Id字段(自动增量),最后在两个字段上创建了唯一约束(NOT NULLABLE)。

所以现在,我可以使用OrmLite进行正确的选择,而不会破坏与其他项目的兼容性。