Beispiel #1
0
        public override void InitMemberInfo(object member, XafMemberInfo memberInfo)
        {
            base.InitMemberInfo(member, memberInfo);
            var typeMetadata = Metadata.FirstOrDefault(tm => tm.Type == memberInfo.Owner.Type);

            if (typeMetadata != null)
            {
                if (typeMetadata.KeyPropertyName == memberInfo.Name)
                {
                    memberInfo.IsKey = true;
                    memberInfo.AddAttribute(new VisibleInDetailViewAttribute(false));
                    memberInfo.AddAttribute(new VisibleInListViewAttribute(false));
                    memberInfo.Owner.KeyMember = memberInfo;
                    memberInfo.IsPersistent = true;
                }

                if (memberInfo.ListElementType != null)
                {
                    var associatedTypeInfo = typesInfo.FindTypeInfo(memberInfo.ListElementType);
                    
                    memberInfo.AssociatedMemberInfo = (XafMemberInfo)associatedTypeInfo.Members.FirstOrDefault(m => m.MemberType == memberInfo.Owner.Type);
                    if (memberInfo.AssociatedMemberInfo != null)
                    {
                        memberInfo.IsAssociation = true;
                        memberInfo.AssociatedMemberInfo.IsReferenceToOwner = true;
                        memberInfo.AssociatedMemberOwner = associatedTypeInfo.Type;
                        memberInfo.IsAggregated = true;
                    }
                }
                memberInfo.IsPersistent = !memberInfo.IsReadOnly;
            }
        }
Beispiel #2
0
 private static void InitializeKeyProperty(XafMemberInfo memberInfo)
 {
     memberInfo.IsKey = true;
     memberInfo.AddAttribute(new VisibleInDetailViewAttribute(false));
     memberInfo.AddAttribute(new VisibleInListViewAttribute(false));
     memberInfo.Owner.KeyMember = memberInfo;
     memberInfo.IsPersistent    = true;
 }
Beispiel #3
0
        public override void InitMemberInfo(object member, XafMemberInfo memberInfo)
        {
            base.InitMemberInfo(member, memberInfo);
            if (memberInfo.Owner.IsInterface)
            {
                return;
            }

            var typeMetadata = Metadata.FirstOrDefault(tm => memberInfo.Owner.Type.IsAssignableFrom(tm.Type));

            PropertyDescriptor descriptor = member as PropertyDescriptor;

            if (descriptor != null)
            {
                foreach (Attribute attr in descriptor.Attributes)
                {
                    if (!memberInfo.Attributes.Any(a => a.GetType() == attr.GetType()))
                    {
                        memberInfo.AddAttribute(attr);
                    }
                }
            }

            if (typeMetadata != null)
            {
                IPropertyMetadata propertyMetadata = typeMetadata.Properties.FirstOrDefault(p => p.Name == memberInfo.Name);

                if (propertyMetadata != null)
                {
                    if (Equals(typeMetadata.KeyProperty, propertyMetadata))
                    {
                        InitializeKeyProperty(memberInfo);
                    }

                    switch (propertyMetadata.RelationType)
                    {
                    case RelationType.OneToMany:
                        InitializeOneToMany(memberInfo);
                        break;

                    case RelationType.ManyToMany:
                        InitializeManyToMany(memberInfo);
                        break;

                    case RelationType.Reference:
                        memberInfo.IsAssociation = true;
                        break;
                    }

                    memberInfo.IsPersistent = !memberInfo.IsReadOnly;
                }
            }
        }
Beispiel #4
0
        public override void InitMemberInfo(object member, XafMemberInfo memberInfo)
        {
            base.InitMemberInfo(member, memberInfo);
            if (memberInfo.Owner.IsInterface) return;
            var typeMetadata = Metadata.FirstOrDefault(tm => memberInfo.Owner.Type.IsAssignableFrom(tm.Type));

            PropertyDescriptor descriptor = member as PropertyDescriptor;
            if (descriptor != null)
            {
                foreach (Attribute attr in descriptor.Attributes)
                    if (!memberInfo.Attributes.Any(a => a.GetType() == attr.GetType()))
                        memberInfo.AddAttribute(attr);
            }

            if (typeMetadata != null)
            {
                IPropertyMetadata propertyMetadata = typeMetadata.Properties.FirstOrDefault(p => p.Name == memberInfo.Name);

                if (propertyMetadata != null)
                {
                    if (Equals(typeMetadata.KeyProperty, propertyMetadata))
                    {
                        InitializeKeyProperty(memberInfo);
                    }

                    switch (propertyMetadata.RelationType)
                    {
                        case RelationType.OneToMany:
                            InitializeOneToMany(memberInfo);
                            break;
                        case RelationType.ManyToMany:
                            InitializeManyToMany(memberInfo);
                            break;
                        case RelationType.Reference:
                            break;
                    }

                    memberInfo.IsPersistent = !memberInfo.IsReadOnly;
                }
            }
        }
Beispiel #5
0
        private static void InitializeKeyProperty(XafMemberInfo memberInfo)
        {
            memberInfo.IsKey = true;
            memberInfo.AddAttribute(new VisibleInDetailViewAttribute(false));
            memberInfo.AddAttribute(new VisibleInListViewAttribute(false));
            memberInfo.Owner.KeyMember = memberInfo;
            memberInfo.IsPersistent = true;

        }