我有一个父母和孩子班级:
public class SharedCarBundle : SharedEntity, ISharedCarBundle, ISharedEntity
{
public SharedCarBundle();
public virtual SharedCar Car { get; set; }
}
public class CarBundle : SharedCarBundle, ISharedCarBundle, ICarAssigned
{
[Value]
public new virtual Car Car { get; set; }
/// <summary>
/// The Car the bundle is of
/// </summary>
ISharedCar ISharedCarBundle.Car
{
get
{
return Car;
}
set
{
Car = (Car)value;
}
}
}
在使用Odata获取请求时,我总是只获取父级属性的空值,而不是子类中Car prop中的原始值。
我在做什么错,应该怎么做才能获取正确的值? 注意:不能更改虚拟属性。
答案 0 :(得分:0)
最后,我自己找到了解决方案。 问题是我从几个类继承而来,很明显,当在父类中虚拟定义了导航属性时,Odata将仅看到父类的null值,而不会在子类中识别出被覆盖的属性。
因此,我的建议是使用Odata时,请仅使用平面类结构;如果需要使用继承,请仅使用接口,并且将其传递给Odata模型的类不应继承其他类,而只能继承接口。