2015-03-13 3 views
2

Не уверен, что это проблема с Breeze или ODATA.BreezeJS/ODATA: Броски могут выполняться только для типов объектов

У меня следующее сообщение об ошибке при выполнении моего OData запроса:

The child type 'job.volume' in a cast was not an entity type. Casts can only be performed on entity types.

Фильтр выглядит следующим образом:

$ Фильтр: (JobGroup/JobJobGroup/любая (x1: x1 /job.volume экв 10d))

где положение построен с использованием нотации JSON:

{ "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 
{ 

} 

Может ли это быть связано с классом работы будучи реферата?

+0

конечно есть. Ошибка указывает, что тип child не является типом сущности, а это значит, что у вас нет для него «DbSet», что имеет смысл, так как является абстрактным. Как вы можете запрашивать данные в запросе, который передается в базу данных из объекта, который не существует в базе данных? – Claies

+0

Конечно, у меня есть класс Job, сопоставленный с таблицей в базе данных. Он отлично работает во всех сценариях, но этот. Я редактировал мой OP с другим классом, наследующим от Job. – Sam

ответ

2

При использовании синтаксиса JSON с любым предикатом вы должны использовать / вместо . для доступа к члену. Это формат OData

Так JSON становится:

{ "JobGroup.JobJobGroup": { "any": { "Job/Volume": { "eq": 10 } } } } 

Ваш OData запрос будет тогда:

$filter:(JobGroup/JobJobGroup/any(x1: x1/Job/Volume eq 10d)) 

Примечание: второстепенный вопрос может быть оболочка имен свойств, они должны точно соответствуют именам в вашей модели. например. Cap V для задания/объем.

 Смежные вопросы

  • Нет связанных вопросов^_^