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