Ошибка со свойством виртуальной навигации OData - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть родительский и дочерний класс:

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 в дочерний класс.

что я делаю неправильно и что я должен сделать, чтобы получить правильное значение? Примечание. Виртуальное свойство не может быть изменено.

1 Ответ

0 голосов
/ 27 апреля 2020

Наконец-то я сам нашел решение этой проблемы. проблема заключалась в том, что я наследовал от нескольких классов, и, очевидно, когда свойство навигации определено как виртуальное в родительском классе, Odata увидит только нулевое значение родительского класса и никогда не распознает переопределенное свойство в дочернем классе.

Таким образом, мой совет при работе с Odata, пожалуйста, используйте только плоскую структуру классов, и если вам нужно работать с наследованием, используйте только интерфейсы, и класс, который вы передадите в модель Odata, не должен наследоваться от других классов, а только от интерфейсы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...