Sam*_*Sam 2 javascript c# odata breeze
不确定这是否是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))
where子句是使用JSON表示法构建的:
{ "jobGroup.jobJobGroup": { "any": { "job.volume": { "eq": 10 } } } }
Run Code Online (Sandbox Code Playgroud)
模型(仅相关部分):
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
{
}
Run Code Online (Sandbox Code Playgroud)
它可能与Job类是抽象的有关吗?
小智 6
将JSON语法与任何谓词一起使用时,必须使用/而不是.成员访问.这是odata格式
所以JSON变成了:
{ "JobGroup.JobJobGroup": { "any": { "Job/Volume": { "eq": 10 } } } }
Run Code Online (Sandbox Code Playgroud)
您的odata查询将是:
$filter:(JobGroup/JobJobGroup/any(x1: x1/Job/Volume eq 10d))
Run Code Online (Sandbox Code Playgroud)
注意:次要问题可能是属性名称的大小写,它们应该与模型中的名称完全匹配.例如.Cap V for job/Volume.