OrmLite / Servicestack:当每个连接的表具有相同的列名时,如何指定列所需的表?

时间:2017-07-14 19:08:11

标签: servicestack dto ormlite-servicestack

我对这些技术很陌生,而且我遇到了一个特定问题。我有一个如此定义的类:

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

...而Servicestack正在从端点发回这些列表。这一切都正常,但是我的特定端点正在进行一些表连接以获取特定记录,而数据库中的每个表都有主键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))
}

...当我从I_id表中实际需要时,我正从cctv_vendor表中取回主键cctv_camera

我已经尝试了.PopulateWith.PopulateWithNonDefaultValues,但确实没有多少运气。我想知道是否有我遗漏的东西,或者是否有人有任何建议。谢谢!

1 个答案:

答案 0 :(得分:2)

OrmLite文档包含的示例显示了如何通过将表名称添加到字段名称来从您想要的表格中获取特定字段{...}您的自定义表格中的strong>,例如从您可以使用的I_id获取cctv_camera字段:

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

或者,您可以使用select data from multiple tables,例如:

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; }
}