public CapabilityMappings GetAll()
        {
            return(GetInternal(() =>
            {
                var retval = new CapabilityMappings();
                var sql = $@"
select cap.*, '|' as '|', std.*, '|' as '|', cs.*
from CapabilityStandard cs
join Capability cap on cap.Id = cs.CapabilityId
join Standard std on std.Id = cs.StandardId
";
                _dbConnection.Value.Query <Capability, Standard, CapabilityStandard, CapabilityMapping>(sql,
                                                                                                        (cap, std, cs) =>
                {
                    var thisCapMap = retval.CapabilityMapping.SingleOrDefault(x => x.Capability.Id == cap.Id);
                    if (thisCapMap == null)
                    {
                        thisCapMap = new CapabilityMapping
                        {
                            Capability = cap
                        };
                        retval.CapabilityMapping.Add(thisCapMap);
                    }

                    thisCapMap.OptionalStandard.Add(
                        new OptionalStandard
                    {
                        StandardId = std.Id,
                        IsOptional = cs.IsOptional
                    });

                    var thiStd = retval.Standard.SingleOrDefault(x => x.Id == std.Id);
                    if (thiStd == null)
                    {
                        retval.Standard.Add(std);
                    }

                    return thisCapMap;
                },
                                                                                                        splitOn: "|,|");

                return retval;
            }));
        }
        public CapabilityMappings GetAll()
        {
            return(GetInternal(() =>
            {
                var retval = new CapabilityMappings();

                var capStds = _capabilityStandardDatastore.GetAll();
                var caps = _capabilitiesDatastore.GetAll();
                var stds = _standardsDatastore.GetAll();

                foreach (var cap in caps)
                {
                    var thisCapMap = retval.CapabilityMapping.SingleOrDefault(x => x.Capability.Id == cap.Id);
                    if (thisCapMap == null)
                    {
                        thisCapMap = new CapabilityMapping
                        {
                            Capability = cap
                        };

                        var optStds = capStds
                                      .Where(cs => cs.CapabilityId == cap.Id)
                                      .Select(cs =>
                                              new OptionalStandard
                        {
                            StandardId = cs.StandardId,
                            IsOptional = cs.IsOptional
                        });
                        thisCapMap.OptionalStandard.AddRange(optStds);

                        retval.CapabilityMapping.Add(thisCapMap);
                    }
                }

                retval.Standard.AddRange(stds);

                return retval;
            }));
        }