示例#1
0
        IPersistentMemberInfo CreateMember(Column column, IPersistentClassInfo owner, TemplateType templateType)
        {
            var        columnName = column.Name;
            ForeignKey foreignKey = _foreignKeyCalculator.GetForeignKey(column);

            if (column.IsForeignKey && owner.CodeTemplateInfo.CodeTemplate.TemplateType != TemplateType.Struct && _foreignKeyCalculator.IsOneToOne(foreignKey, columnName))
            {
                templateType = TemplateType.XPOneToOnePropertyMember;
            }
            else if (foreignKey != null && foreignKey.Columns.Count > 1)
            {
                columnName = foreignKey.ReferencedTable;
            }
            if (_objectSpace.FindObject <IPersistentMemberInfo>(info => info.Name == columnName && info.Owner == owner, PersistentCriteriaEvaluationBehavior.InTransaction) != null)
            {
                return(null);
            }
            if (!(column.IsForeignKey))
            {
                return(CreatePersistentCoreTypeMemberInfo(column, owner, templateType));
            }
            if (foreignKey != null)
            {
                IPersistentClassInfo referenceClassInfo = GetReferenceClassInfo(foreignKey.ReferencedTable);
                var persistentReferenceMemberInfo       = CreatePersistentReferenceMemberInfo(columnName, owner, referenceClassInfo, templateType);
                return(persistentReferenceMemberInfo);
            }
            throw new NotImplementedException(column.Name + " " + ((Table)column.Parent).Name);
        }
示例#2
0
 void CreateTemplateInfo(IPersistentReferenceMemberInfo persistentReferenceMemberInfo, Column column, ForeignKeyCalculator _foreignKeyCalculator) {
     var table = (Table)column.Parent;
     var database = table.Parent;
     var foreignKey = _foreignKeyCalculator.GetForeignKey(database, column.Name, table);
     var templateInfo = _objectSpace.CreateWCObject<ITemplateInfo>();
     templateInfo.Name = persistentReferenceMemberInfo.CodeTemplateInfo.CodeTemplate.TemplateType.ToString();
     templateInfo.TemplateCode =
         _foreignKeyCalculator.GetRefTableForeignKey(foreignKey, column.Name).Columns.OfType<ForeignKeyColumn>().
             Where(keyColumn => keyColumn.ReferencedColumn == column.Name).Single().Name;
     persistentReferenceMemberInfo.TemplateInfos.Add(templateInfo);
 }
示例#3
0
        void CreateTemplateInfo(IPersistentReferenceMemberInfo persistentReferenceMemberInfo, Column column, ForeignKeyCalculator _foreignKeyCalculator)
        {
            var table        = (Table)column.Parent;
            var database     = table.Parent;
            var foreignKey   = _foreignKeyCalculator.GetForeignKey(database, column.Name, table);
            var templateInfo = _objectSpace.CreateWCObject <ITemplateInfo>();

            templateInfo.Name         = persistentReferenceMemberInfo.CodeTemplateInfo.CodeTemplate.TemplateType.ToString();
            templateInfo.TemplateCode =
                _foreignKeyCalculator.GetRefTableForeignKey(foreignKey, column.Name).Columns.OfType <ForeignKeyColumn>().Single(keyColumn => keyColumn.ReferencedColumn == column.Name).Name;
            persistentReferenceMemberInfo.TemplateInfos.Add(templateInfo);
        }
示例#4
0
        bool IsCompoundForeignKey(Column column)
        {
            var foreignKey = _foreignKeyCalculator.GetForeignKey(column);

            return(foreignKey.Columns.Count > 1);
        }