如何在一个poco / table具有复合主键时定义引用

时间:2016-07-29 00:06:22

标签: c# .net ormlite-servicestack

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

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

    [Reference]
    public CustomerAddress PrimaryAddress { get; set; }
}

但是,让我们说我的CustomerAddress poco类实际上必须这样定义,因为很久很久以前有人决定像这样设计这个表。

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

    [PrimaryKey]
    public string Id_2 { get; set; }
}

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

1 个答案:

答案 0 :(得分:1)

您无法使用依赖它的API(但您仍然可以使用SELECT) 请参阅OrmLite limitations

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

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