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; }
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)); } }
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)); } }
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); }
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; } }
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; } }