I am using Open Types:
public class Student
{
public Guid Id { get; set; }
public string Name { get; set; }
public IBackpack Backpack
{
get
{
return new Backpack() { Id = Guid.NewGuid() };
}
set
{
}
}
Dictionary<string, object> interfaces;
public Dictionary<string, object> Interfaces
{
get
{
if (interfaces == null)
{
interfaces = new Dictionary<string, object>
{
{ "Backpack", this.Backpack as Backpack }
};
}
return interfaces;
}
set
{
}
}
}
My model:
static IEdmModel GetEdmModel(ODataConventionModelBuilder builder)
{
builder.EntityType<IEntity>().Abstract().HasKey(s => s.Id);
var entity = builder.EntityType<Student>();
entity.Ignore(s => s.Backpack);
builder.EntityType<Backpack>();
builder.EntitySet<Student>("Student");
var model = builder.GetEdmModel();
return model;
}
When I do query like https://localhost:44383/odata/Student?$select=XYZ it is returning empty value:
{
"@odata.context": "https://localhost:44383/OData/$metadata#Student/ODataCoreTest.EntityBase(XYZ)",
"value": [
{}
]
}
How to return error when property does not exists on open types dictionary?