Простое многоуровневое расширение Odata

#c# #asp.net #odata

#c# #asp.net #odata

Вопрос:

Работаю с простым Odata, и я пытаюсь выполнить многоуровневое расширение, и я получаю нуль при расширении второго уровня. Есть ли правильный способ расширения с несколькими уровнями?

Вот мой пример модели, а также то, как у меня работает функция

  protected override async Task<IEnumerable<Item>> InternalExecute()
        {
            using (HttpClient client = AuthHelper.GetHttpClient(_connectionString))
            {
                var oData = new ODataClient(new ODataClientSettings(client));

                var head = await oData
                     .For<Item>()
                     .Expand(x => x.account)
                     .Expand(x => x.account.parentaccountid)
                     .FindEntriesAsync();
                return head;
            }

        }


public class Item
{
    
    public string itemname { get; set; }
    public Account account { get; set; }


    public class Account
    {
        public string accountid { get; set; }
        public string name { get; set; }

        public ParentAccount parentaccountid { get; set; }
    }

    public class ParentAccount
    {
        public string accountid { get; set; }
        public string name { get; set; }
    }

}```
 

Комментарии:

1. Вопрос может иметь больше смысла, если вы переименуете свойство Account.parentaccountid во что-то более похожее на Account.parentaccount …? Код легче читать, если вы используете camelCase или camelCase для своих свойств?

2. Возможно ли, что элементы в данных (например, учетные записи ‘экземпляры’) иногда имеют нулевые значения для свойства ParentAccount (называемого ‘parentaccountid’)?

3. @Aidanapword Хотя это правда, что иногда он возвращает нулевые значения, я снова проверил нашу crm, что записи имеют родительскую запись и возвращают значение null.