Пример #1
0
        public object InsertChild(string entityName, string id, string childName, object entity)
        {
            // TODO: refactor
            var entityType  = _entityResolver.Resolve(entityName);
            var repo        = _entityResolver.GetRepository(entityType);
            var childType   = _entityResolver.ResolveChild(entityType, childName);
            var json        = JsonConvert.SerializeObject(entity);
            var childEntity = JsonConvert.DeserializeObject(json, childType);

            childType.GetProperty("Id").SetValue(childEntity, ObjectId.GenerateNewId().ToString());
            var item           = repo.Get(id);
            var childFieldName = $"{childName[0].ToString().ToUpperInvariant()}{childName.Substring(1).ToLowerInvariant()}";
            var childField     = entityType.GetProperty(childFieldName);
            var children       = childField.GetValue(item);

            children.GetType().GetMethod("Add").Invoke(children, new[] { childEntity });
            repo.Update(id, item);
            return(childEntity);
        }