Пример #1
0
        public JoinReader(IReference reference)
        {
            IReferenceMetadata metadata = reference.List ?? reference.Find(ReferenceFlags.Child).Metadata;

            this.Metadata = metadata.Identity.Require <IBindingMetadata>();
            this.Identity = this.Metadata.Identity;
        }
Пример #2
0
        public int GetJoinIndex(IReference reference)
        {
            IReference       childReference = reference.Find(ReferenceFlags.Child);
            MetadataIdentity target         = childReference.Metadata.Identity;

            int parentIndex = this.GetListIndex(reference);

            lock (this.state)
            {
                Dictionary <MetadataIdentity, int> innerMap = this.childMap.GetOrAdd(parentIndex);

                return(innerMap.GetOrAdd(target, innerMap.Count));
            }
        }
 public static IReferenceKey FindKey(this IReference reference, ReferenceFlags flag) => reference.Find(flag)?.Key;
Пример #4
0
        private IEnumerable <Type> GetParentKeyType(IReference reference)
        {
            IReference parentReference = reference.Find(ReferenceFlags.Parent);

            return(parentReference.Key.Properties.Select(m => m.Type.GetKeyType()));
        }