Пример #1
0
 static void CreateXpandCustomMemberInfo(IModelMemberEx modelMemberEx, XPObjectSpace objectSpace)
 {
     try {
         Type        classType   = modelMemberEx.ModelClass.TypeInfo.Type;
         XPClassInfo xpClassInfo = XpandModuleBase.Dictiorary.GetClassInfo(classType);
         lock (xpClassInfo) {
             var customMemberInfo = xpClassInfo.FindMember(modelMemberEx.Name) as XPCustomMemberInfo;
             if (customMemberInfo == null)
             {
                 customMemberInfo = CreateMemberInfo(modelMemberEx, xpClassInfo);
                 ((IModelTypesInfoProvider)modelMemberEx.Application).TypesInfo.RefreshInfo(classType);
                 AddAttributes(modelMemberEx, customMemberInfo);
             }
             var xpandCustomMemberInfo = customMemberInfo as XpandCustomMemberInfo;
             if (xpandCustomMemberInfo != null)
             {
                 CreateColumn(modelMemberEx as IModelMemberPersistent, objectSpace, xpandCustomMemberInfo);
                 CreateForeignKey(modelMemberEx as IModelMemberOneToManyCollection, objectSpace, xpandCustomMemberInfo);
                 UpdateMember(modelMemberEx, customMemberInfo);
             }
         }
     }
     catch (Exception exception) {
         throw new Exception(
                   ExceptionLocalizerTemplate <SystemExceptionResourceLocalizer, ExceptionId> .GetExceptionMessage(
                       ExceptionId.ErrorOccursWhileAddingTheCustomProperty,
                       modelMemberEx.MemberInfo.MemberType,
                       ((IModelClass)modelMemberEx.Parent).Name,
                       modelMemberEx.Name,
                       exception.Message));
     }
 }
Пример #2
0
        static XpandCustomMemberInfo CreateMemberInfo(IModelMemberEx modelMemberEx, XPClassInfo xpClassInfo)
        {
            var calculatedMember = modelMemberEx as IModelMemberCalculated;

            if (calculatedMember != null)
            {
                return(xpClassInfo.CreateCalculabeMember(calculatedMember.Name, calculatedMember.Type, calculatedMember.AliasExpression));
            }
            var modelMemberOrphanedColection = modelMemberEx as IModelMemberOrphanedColection;

            if (modelMemberOrphanedColection != null)
            {
                return(xpClassInfo.CreateCollection(modelMemberOrphanedColection.Name, modelMemberOrphanedColection.CollectionType.TypeInfo.Type,
                                                    modelMemberOrphanedColection.Criteria));
            }
            var modelMemberOneToManyCollection = modelMemberEx as IModelMemberOneToManyCollection;

            if (modelMemberOneToManyCollection != null)
            {
                var elementType               = modelMemberOneToManyCollection.CollectionType.TypeInfo.Type;
                var associationAttribute      = new AssociationAttribute(modelMemberOneToManyCollection.AssociationName, elementType);
                var xpandCollectionMemberInfo = xpClassInfo.CreateCollection(modelMemberOneToManyCollection.Name, elementType, null, associationAttribute);
                modelMemberOneToManyCollection.AssociatedMember.ModelClass.TypeInfo.FindMember(modelMemberOneToManyCollection.AssociatedMember.Name).AddAttribute(associationAttribute);
                return(xpandCollectionMemberInfo);
            }
            var modelMemberModelMember = modelMemberEx as IModelMemberModelMember;

            if (modelMemberModelMember != null)
            {
                var memberInfo = ModelMemberModelMemberDomainLogic.Get_MemberInfo(modelMemberModelMember);
                return((XpandCustomMemberInfo)xpClassInfo.FindMember(memberInfo.Name));
            }
            return(xpClassInfo.CreateCustomMember(modelMemberEx.Name, modelMemberEx.Type, modelMemberEx is IModelMemberNonPersistent));
        }
Пример #3
0
 static void CreateXpandCustomMemberInfo(IModelMemberEx modelMemberEx, XPObjectSpace objectSpace) {
     try {
         Type classType = modelMemberEx.ModelClass.TypeInfo.Type;
         XPClassInfo xpClassInfo = XpandModuleBase.Dictiorary.GetClassInfo(classType);
         lock (xpClassInfo) {
             var customMemberInfo = xpClassInfo.FindMember(modelMemberEx.Name) as XPCustomMemberInfo;
             if (customMemberInfo == null) {
                 customMemberInfo= CreateMemberInfo(modelMemberEx, xpClassInfo);
                 ((IModelTypesInfoProvider) modelMemberEx.Application).TypesInfo.RefreshInfo(classType);
                 AddAttributes(modelMemberEx, customMemberInfo);
             }
             var xpandCustomMemberInfo = customMemberInfo as XpandCustomMemberInfo;
             if (xpandCustomMemberInfo != null) {
                 CreateColumn(modelMemberEx as IModelMemberPersistent, objectSpace, xpandCustomMemberInfo);
                 CreateForeignKey(modelMemberEx as IModelMemberOneToManyCollection, objectSpace, xpandCustomMemberInfo);
                 UpdateMember(modelMemberEx, customMemberInfo);
             }
         }
     }
     catch (Exception exception) {
         throw new Exception(
             ExceptionLocalizerTemplate<SystemExceptionResourceLocalizer, ExceptionId>.GetExceptionMessage(
                 ExceptionId.ErrorOccursWhileAddingTheCustomProperty,
                 modelMemberEx.MemberInfo.MemberType,
                 ((IModelClass) modelMemberEx.Parent).Name,
                 modelMemberEx.Name,
                 exception.Message));
     }
 }
Пример #4
0
        static void UpdateMember(IModelMemberEx modelMemberEx, XPMemberInfo xpMemberInfo)
        {
            var modelRuntimeCalculatedMember = modelMemberEx as IModelMemberCalculated;

            if (modelRuntimeCalculatedMember != null)
            {
                ((XpandCalcMemberInfo)xpMemberInfo).SetAliasExpression(modelRuntimeCalculatedMember.AliasExpression);
            }
        }
Пример #5
0
 static void AddAttributes(IModelMemberEx modelMemberEx, XPCustomMemberInfo memberInfo)
 {
     if (modelMemberEx.Size != 0)
     {
         memberInfo.AddAttribute(new SizeAttribute(modelMemberEx.Size));
     }
     if (modelMemberEx is IModelMemberNonPersistent && !(modelMemberEx is IModelMemberCalculated))
     {
         memberInfo.AddAttribute(new NonPersistentAttribute());
     }
 }
Пример #6
0
 public static string Get_Caption(IModelMemberEx modelRuntimeMember)
 {
     return(modelRuntimeMember.MemberInfo != null?GetMemberCaption(modelRuntimeMember.MemberInfo) : string.Empty);
 }
Пример #7
0
 public static void Set_IsCalculated(IModelMemberEx modelRuntimeMember, bool value)
 {
 }
Пример #8
0
 public CustomCreateMemberArgs(IModelMemberEx modelMemberEx)
 {
     _modelMemberEx = modelMemberEx;
 }
Пример #9
0
 static bool CanCreateDbArtifact(IModelMemberEx modelMemberEx, XPObjectSpace objectSpace)
 {
     return(modelMemberEx != null && objectSpace != null && (modelMemberEx.CreatedAtDesignTime.HasValue && !modelMemberEx.CreatedAtDesignTime.Value));
 }
Пример #10
0
 public CustomCreateMemberArgs(IModelMemberEx modelMemberEx) {
     _modelMemberEx = modelMemberEx;
 }
Пример #11
0
 static XpandCustomMemberInfo CreateMemberInfo(IModelMemberEx modelMemberEx, XPClassInfo xpClassInfo) {
     var calculatedMember = modelMemberEx as IModelMemberCalculated;
     if (calculatedMember != null)
         return xpClassInfo.CreateCalculabeMember(calculatedMember.Name, calculatedMember.Type, calculatedMember.AliasExpression);
     var modelMemberOrphanedColection = modelMemberEx as IModelMemberOrphanedColection;
     if (modelMemberOrphanedColection != null) {
         return xpClassInfo.CreateCollection(modelMemberOrphanedColection.Name, modelMemberOrphanedColection.CollectionType.TypeInfo.Type,
                                             modelMemberOrphanedColection.Criteria);
     }
     var modelMemberOneToManyCollection = modelMemberEx as IModelMemberOneToManyCollection;
     if (modelMemberOneToManyCollection!=null) {
         var elementType = modelMemberOneToManyCollection.CollectionType.TypeInfo.Type;
         var associationAttribute = new AssociationAttribute(modelMemberOneToManyCollection.AssociationName, elementType);
         var xpandCollectionMemberInfo = xpClassInfo.CreateCollection(modelMemberOneToManyCollection.Name, elementType, null, associationAttribute);
         modelMemberOneToManyCollection.AssociatedMember.ModelClass.TypeInfo.FindMember(modelMemberOneToManyCollection.AssociatedMember.Name).AddAttribute(associationAttribute);
         return xpandCollectionMemberInfo;
     }
     return xpClassInfo.CreateCustomMember(modelMemberEx.Name, modelMemberEx.Type, modelMemberEx is IModelMemberNonPersistent);
 }
Пример #12
0
 static void AddAttributes(IModelMemberEx modelMemberEx, XPCustomMemberInfo memberInfo) {
     if (modelMemberEx.Size != 0)
         memberInfo.AddAttribute(new SizeAttribute(modelMemberEx.Size));
     if (modelMemberEx is IModelMemberNonPersistent && !(modelMemberEx is IModelMemberCalculated))
         memberInfo.AddAttribute(new NonPersistentAttribute());
 }
Пример #13
0
 static void UpdateMember(IModelMemberEx modelMemberEx, XPMemberInfo xpMemberInfo) {
     var modelRuntimeCalculatedMember = modelMemberEx as IModelMemberCalculated;
     if (modelRuntimeCalculatedMember != null) {
         ((XpandCalcMemberInfo)xpMemberInfo).SetAliasExpression(modelRuntimeCalculatedMember.AliasExpression);
     }
 }
Пример #14
0
 static bool CanCreateDbArtifact(IModelMemberEx modelMemberEx, XPObjectSpace objectSpace) {
     return modelMemberEx != null && objectSpace != null && (modelMemberEx.CreatedAtDesignTime.HasValue&&!modelMemberEx.CreatedAtDesignTime.Value);
 }