Beispiel #1
0
 static void AddRuntimeMembers(IModelApplication model, XPDictionary dictionary)
 {
     foreach (IModelRuntimeMember modelRuntimeMember in GetCustomFields(model))
     {
         try {
             Type        classType = modelRuntimeMember.ModelClass.TypeInfo.Type;
             XPClassInfo typeInfo  = dictionary.GetClassInfo(classType);
             lock (typeInfo) {
                 if (typeInfo.FindMember(modelRuntimeMember.Name) == null)
                 {
                     XpandCustomMemberInfo memberInfo = GetMemberInfo(modelRuntimeMember, typeInfo);
                     AddAttributes(modelRuntimeMember, memberInfo);
                     XafTypesInfo.Instance.RefreshInfo(classType);
                 }
             }
         } catch (Exception exception) {
             throw new Exception(
                       ExceptionLocalizerTemplate <SystemExceptionResourceLocalizer, ExceptionId> .GetExceptionMessage(
                           ExceptionId.ErrorOccursWhileAddingTheCustomProperty,
                           modelRuntimeMember.MemberInfo.MemberType,
                           ((IModelClass)modelRuntimeMember.Parent).Name,
                           modelRuntimeMember.Name,
                           exception.Message));
         }
     }
 }
 public DCPropertyInfo(string name, Type propertyType, XPClassInfo declaringType, bool canRead, bool canWrite, XpandCustomMemberInfo xpandCustomMemberInfo)
 {
     Name                   = name;
     PropertyType           = propertyType;
     _declaringTypeCore     = declaringType;
     CanRead                = canRead;
     CanWrite               = canWrite;
     _xpandCustomMemberInfo = xpandCustomMemberInfo;
 }
Beispiel #3
0
 public DCPropertyInfo(string name, Type propertyType, XPClassInfo declaringType, bool canRead, bool canWrite, XpandCustomMemberInfo xpandCustomMemberInfo)
 {
     _nameCore              = name;
     _propertyTypeCore      = propertyType;
     _declaringTypeCore     = declaringType;
     _canReadCore           = canRead;
     _canWriteCore          = canWrite;
     _xpandCustomMemberInfo = xpandCustomMemberInfo;
     _attributesCore.AddRange(xpandCustomMemberInfo.Attributes);
 }
 static void CreateColumn(IModelMemberPersistent modelMemberPersistent, XPObjectSpace objectSpace,
                          XpandCustomMemberInfo customMemberInfo)
 {
     if (CanCreateColumn(modelMemberPersistent, objectSpace))
     {
         objectSpace.CreateColumn(customMemberInfo, ((IModelOptionMemberPersistent)modelMemberPersistent.Application.Options).ThrowUnableToCreateDbObjectException);
         modelMemberPersistent.DataStoreColumnCreated     = true;
         modelMemberPersistent.DataStoreForeignKeyCreated = customMemberInfo.HasAttribute(typeof(AssociationAttribute));
     }
 }
Beispiel #5
0
 static void CreateColumn(IModelMemberPersistent modelMemberPersistent, XPObjectSpace objectSpace,
                          XpandCustomMemberInfo customMemberInfo)
 {
     if (CanCreateColumn(modelMemberPersistent, objectSpace))
     {
         objectSpace.CreateColumn(customMemberInfo);
         modelMemberPersistent.DataStoreColumnCreated     = true;
         modelMemberPersistent.DataStoreForeignKeyCreated = customMemberInfo.HasAttribute(typeof(AssociationAttribute));
     }
 }
Beispiel #6
0
        public static XpandCustomMemberInfo CreateCustomMember(this XPClassInfo classInfo, string propertyName, Type propertyType,
                                                               bool nonPersistent, params Attribute[] attributes)
        {
            var xpandCustomMemberInfo = new XpandCustomMemberInfo(classInfo, propertyName, propertyType, null, nonPersistent, false);

            foreach (Attribute attribute in attributes)
            {
                xpandCustomMemberInfo.AddAttribute(attribute);
            }
            return(xpandCustomMemberInfo);
        }
Beispiel #7
0
        public XpandModelMemberInfo(ModelMemberInfoData memberInfoData, bool isReadOnly, params ModelMemberInfoAdditionalData[] additionalMembers)
            : base(memberInfoData.Owner, memberInfoData.Name, memberInfoData.MemberType, null, true, false, isReadOnly)
        {
            _modelNodePath = memberInfoData.ModelNodePath;
            foreach (var attribute in memberInfoData.ModelOwner.PropertyX(memberInfoData.ModelNodePath.Split('.').Last()).Attributes())
            {
                AddAttribute(attribute);
            }

            foreach (var additionalMember in additionalMembers)
            {
                var memberType          = typeof(ITypeInfo).IsAssignableFrom(additionalMember.MemberType)?typeof(Type):additionalMember.MemberType;
                var modelMemberInfoData = new ModelMemberInfoData(Owner, additionalMember.Name, memberType, additionalMember.Name, additionalMember.ModelOwner);
                new XpandModelMemberInfo(modelMemberInfoData, true);
            }
            _modelNodeIdMemberInfo = Owner.FindMember("ModelNode") as XpandCustomMemberInfo ?? new XpandCustomMemberInfo(Owner, "ModelNode", typeof(IModelNode), null, true, true);
        }
 DCPropertyInfo DcPropertyInfo(XPClassInfo classInfo, XpandCustomMemberInfo info)
 {
     return(new DCPropertyInfo(info.Name, info.MemberType, classInfo, true, !info.IsReadOnly, info));
 }
 static void CreateForeignKey(IModelMemberOneToManyCollection modelMemberOneToManyCollection, XPObjectSpace objectSpace, XpandCustomMemberInfo customMemberInfo)
 {
     if (CanCreateForeignKey(modelMemberOneToManyCollection, objectSpace))
     {
         var throwUnableToCreateDbObjectException = ((IModelOptionMemberPersistent)modelMemberOneToManyCollection.Application.Options).ThrowUnableToCreateDbObjectException;
         var xpCustomMemberInfo = customMemberInfo.GetAssociatedMember() as XPCustomMemberInfo;
         if (xpCustomMemberInfo == null)
         {
             throw new NullReferenceException("xpCustomMemberInfo");
         }
         objectSpace.CreateForeignKey(xpCustomMemberInfo, throwUnableToCreateDbObjectException);
         modelMemberOneToManyCollection.AssociatedMember.DataStoreForeignKeyCreated = true;
         modelMemberOneToManyCollection.DataStoreForeignKeyCreated = true;
     }
 }
Beispiel #10
0
 static void CreateForeignKey(IModelMemberOneToManyCollection modelMemberOneToManyCollection, XPObjectSpace objectSpace, XpandCustomMemberInfo customMemberInfo)
 {
     if (CanCreateForeignKey(modelMemberOneToManyCollection, objectSpace))
     {
         var xpCustomMemberInfo = customMemberInfo.GetAssociatedMember() as XPCustomMemberInfo;
         if (xpCustomMemberInfo == null)
         {
             throw new NullReferenceException("xpCustomMemberInfo");
         }
         objectSpace.CreateForeignKey(xpCustomMemberInfo);
         modelMemberOneToManyCollection.AssociatedMember.DataStoreForeignKeyCreated = true;
         modelMemberOneToManyCollection.DataStoreForeignKeyCreated = true;
     }
 }