Пустой список в исключении создания индекса Ravendb - PullRequest
0 голосов
/ 14 мая 2018

У меня есть проблема, из-за которой index, созданный мной при запросе, выдает исключение:

Не удалось прочитать значение для свойства: члены

Вот это index:

public class GroupsNameIdIndex : AbstractIndexCreationTask<CommunityDocument, GroupsNameIdIndex.Result>
    {
        public class Result
        {
            public string CommunityId { get; set; }
            public string Id { get; set; }
            public string Name { get; set; }
            public IList<string> Members { get; set; }
        }

        public GroupsNameIdIndex()
        {
            Map = communities => from community in communities
               from newGroup in community.Groups
                select new
                {
                    CommunityId = community.Id.Replace("CommunityDocuments/", string.Empty),
                    newGroup.Id,
                    newGroup.Name,
                    newGroup.Members
                };
            StoreAllFields(FieldStorage.Yes);
        }
    }

Это запрос:

 var groupResult = session
                .Query<GroupsNameIdIndex.Result, GroupsNameIdIndex>()
                .Where(x => x.CommunityId == info.Id)
                .AsProjection<GroupsNameIdIndex.Result>()
                .ToList();

У меня есть только 1 группа в документе с соответствующими Id, и узел Members является пустым списком, а не нулевым. Когда я вручную заполняю его одной строкой, тогда запрос выполняется нормально. Почему пустые списки не допускаются? Если это ограничение, то для меня индексация не имеет смысла, потому что у меня будет много пустых списков, которые повсеместно приводят к сбою приложения.

edit : Добавление класса на случай, если он имеет к нему какое-то отношение:

public class CommunityGroup
    {
        public CommunityGroup()
        {
            Members = new List<string>();
            MemberDetails = new List<MemberView>();
            MemberNames = new List<string>();
        }
        public string Id { get; set; }
        public string Name { get; set; }
        public string Slug { get; set; }
        public string Description { get; set; }
        public bool AdminOnly { get; set; }
        public bool NewsContribute { get; set; }
        public bool AutoGroup { get; set; }
        public int LowerAgeLimit { get; set; }
        public int UpperAgeLimit { get; set; }
        public string Gender { get; set; }
        public IList<string> Members { get; set; }
        public IList<string> MemberNames { get; set; }
        public IList<MemberView> MemberDetails { get; set; }
        public string RelatedCommunityId { get; set; }
        public string CreatedBy { get; set; }
        public bool SmartGroup { get; set; }
        public IList<SmartGroupRules> AndRules { get; set; }
        public IList<SmartGroupRules> OrRules { get; set; }
        public string ParentGroup { get; set; }
        public List<string> EntryGroups { get; set; }
        public bool Hidden { get; set; }
        public string ActivityType { get; set; }
        public List<string> AnyGroupList { get; set; }
        public List<string> AllGroupList { get; set; }
        public GroupType GroupType { get; set; }
    }

а вот JSON группы в БД

   "Groups": [
        {
            "Id": "5ja34tefoq7sfj",
            "Name": "new test",
            "Slug": "new-test",
            "Description": null,
            "AdminOnly": true,
            "NewsContribute": false,
            "AutoGroup": false,
            "LowerAgeLimit": 0,
            "UpperAgeLimit": 0,
            "Gender": null,
            "Members": [],
            "MemberNames": [],
            "MemberDetails": [],
            "RelatedCommunityId": null,
            "CreatedBy": "Activity",
            "SmartGroup": false,
            "AndRules": null,
            "OrRules": null,
            "ParentGroup": null,
            "EntryGroups": null,
            "Hidden": false,
            "ActivityType": null,
            "AnyGroupList": null,
            "AllGroupList": null,
            "GroupType": "Default"
        }
    ],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...