OrmLite / Servicestack:当每个 table 连接具有相同的列名时,如何指定你想要哪个 table 的列?

OrmLite / Servicestack: how to specify which table you want a column from when each table joined has the same column name?

我对这些技术还很陌生,我遇到了一个特定问题。我有一个 class 定义如下:

public class CameraDetail
{
    public int I_id { get; set; }
    public string C_division_id { get; set; }
    // ....some other members....
}

...并且 Servicestack 正在从端点发回这些列表。一切正常,但我的特定端点正在执行一些 table 连接以获取特定记录,并且我们数据库中的 every table 具有主键 I_id.因此,在此处的当前查询中:

public List<CameraDetail> GetCameraDetailForStore(string storeId)
{

    List<CameraDetail> ret = null;

    // this is inside a using statement I didn't copy, just assume 'conn' exists
    conn.Open();

    ret = conn.Select<CameraDetail>(
        conn.From<cctv_camera>()
            .Join<cctv_camera, cctv_dvr>((c, d) => c.C_dvr_id == d.C_dvr_id)
            .And<cctv_dvr>(d => d.C_store_id == storeId)
            .Join<cctv_camera, cctv_vendor>((c, v) => c.C_vendor_id == v.C_vendor_id)
            .Where(c => c.C_store_id == storeId))
}

...我正在从 cctv_vendor table 取回主键 I_ids 而我实际上需要从 cctv_camera table .

我已经尝试了 .PopulateWith.PopulateWithNonDefaultValues,但运气并不好。我想知道我是否遗漏了什么或者是否有人有任何建议。谢谢!

OrmLite 文档中的示例展示了如何 select data from multiple tables 通过在 table 名称前面添加所需的 table 来获取特定的文件 到自定义 table 中的 字段名称 ,例如,要从 cctv_camera 中获取 I_id 字段,您可以使用:

public class CameraDetail
{
    public int cctv_cameraI_id { get; set; }
}

或者您可以使用 BelongsTo attribute,例如:

public class CameraDetail
{
    [BelongTo(typeof(cctv_camera))]
    public int I_id { get; set; }
}

或者,如果您想在模型中使用完全不同的名称,您可以只使用 属性 getter,例如:

public class CameraDetail
{
    public int Id => cctv_cameraI_id;
    public int cctv_cameraI_id { get; set; }
}