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_id
s 而我实际上需要从 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; }
}
我对这些技术还很陌生,我遇到了一个特定问题。我有一个 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_id
s 而我实际上需要从 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; }
}