使用SOD中ORM方式进行多表(表中存在同名字段)联合查询的时候如何动态排序,如下排序字段在多表中只有一个可以,有同名字段的时候就会报错(动态排序是硬性需求)
var v1 = new table1() { column1 = "1" };
var v2 = new table2() { column1 = "2" };
OQL q = OQL.From(v1)
.InnerJoin(v2)
.On(v1.ID, v2.ID)
.Select(v1.column1, v2.column1)
.Where(v1.column1,v2.column1)
.OrderBy(new string[] { "column1 desc" })
.END;
没法了,使用映射暴力解决...
namespace a
public b
{
//把所有查询用的实体放在这里,公开
public table1 v1 = new table1() { column1 = "1" };
public table2 v2 = new table2() { column1 = "2" };
public void Select(string vi_field = "v1_column1",string type = "asc")
{
// 自己拆分一下,起名的时候对应上规则
// vi = "v1",名称对应实例化的变量名
// field = "column1",对应实体类中的属性
var Oc = this.GetType().GetField(vi).GetValue(this);
OQL q = OQL.From(v1)
.InnerJoin(v2)
.On(v1.ID, v2.ID)
.Select(v1.column1, v2.column1)
.OrderBy(Oc.GetType().GetProperty(field).GetValue(Oc), type)
.END;
//解决单排序字段的动态排序问题,不用构造视图了
}
}