예제 #1
0
파일: PersonReference.cs 프로젝트: lr030/ML
        public PersonReference()
        {
            ResolveReference(query =>
            {
                var (domain, identifier, defaultLabel) = query;

                var targetModel = CacheFetch(domain, identifier);

                if (targetModel != null)
                {
                    if (defaultLabel != null) targetModel.Name ??= defaultLabel;
                    return targetModel;
                }

                var referenceProbe = Person.ExternalReferences.Where(i =>
                    i.References.Any(j =>
                        j.Domain == domain &&
                        j.Key == identifier)).FirstOrDefault();

                // This will fetch the target model OR create an empty one. Let's also use the local DataSets so we can preserve any changes.
                targetModel = Set.Fetch(referenceProbe?.Id);

                // Default name? Save it as well.
                if (defaultLabel != null) targetModel.Name ??= defaultLabel;

                //Let's check/save the reference too.
                var targetReference = ReferenceSet.Fetch(targetModel.Id);
                targetReference.FetchReference(domain, identifier);

                CacheStore(domain, identifier, targetModel);

                return targetModel;
            });
        }
예제 #2
0
        public LocationReference()
        {
            GetReference(query =>
            {
                var(domain, identifier, referenceModel) = query;

                var targetModel = CacheFetch(domain, identifier);

                if (targetModel != null)
                {
                    if (referenceModel?.Name != null)
                    {
                        targetModel.Name ??= referenceModel.Name;
                    }
                    return(targetModel);
                }

                var referenceProbe = Location.ExternalReferences.Where(i =>
                                                                       i.References.Any(j =>
                                                                                        j.Domain == domain &&
                                                                                        j.Key == identifier)).FirstOrDefault();

                // This will fetch the target model OR create an empty one. Let's also use the local DataSets so we can preserve any changes.

                if (referenceProbe != null)
                {
                    targetModel = Set.Fetch(referenceProbe?.Id);
                }

                else
                {
                    targetModel = Set.Fetch(Resolve(referenceModel));
                }



                // Default name? Apply.
                if (referenceModel?.Name != null)
                {
                    targetModel.Name ??= referenceModel.Name;
                }

                //Let's check/save the reference too.
                var targetReference = ReferenceSet.Fetch(targetModel.Id);
                targetReference.FetchReference(domain, identifier);

                CacheStore(domain, identifier, targetModel);

                return(targetModel);
            });
        }