不确定这是否是Breeze或ODATA问题。
执行ODATA查询时出现以下错误:
The child type 'job.volume' in a cast was not an entity type. Casts can only be performed on entity types.
过滤器如下所示:
$ filter:(JobGroup / JobJobGroup / any(x1:x1 / job.volume eq 10d))
使用JSON表示法构建where子句:
{ "jobGroup.jobJobGroup": { "any": { "job.volume": { "eq": 10 } } } }
模型(仅相关部分):
public class WorkflowTask
{
public virtual JobGroup JobGroup { get; set; }
}
public class JobGroup
{
public virtual IList<JobJobGroup> JobJobGroup { get; set; }
}
public class JobJobGroup
{
public virtual Job Job { get; set; }
public virtual Guid JobId { get; set; }
public virtual JobGroup JobGroup { get; set; }
public virtual Guid JobGroupId { get; set; }
}
public abstract class Job
{
public virtual Decimal Volume { get; set; }
}
public class JobEditing : Job
{
}
它可能与Job类是抽象的吗?
答案 0 :(得分:5)
将JSON语法与任何谓词一起使用时,必须使用 / 而不是。进行成员访问。这是odata格式
所以JSON变成了:
{ "JobGroup.JobJobGroup": { "any": { "Job/Volume": { "eq": 10 } } } }
您的odata查询将是:
$filter:(JobGroup/JobJobGroup/any(x1: x1/Job/Volume eq 10d))
注意:次要问题可能是属性名称的大小写,它们应该与模型中的名称完全匹配。例如。第五章为工作/卷。