public List<IPersistentAttributeInfo> Create(Column column, IPersistentMemberInfo owner, DataTypeMapper dataTypeMapper) { var persistentAttributeInfos = new List<IPersistentAttributeInfo>(); if (owner.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.XPOneToOnePropertyMember) return persistentAttributeInfos; if (column.InPrimaryKey) { if (owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType != TemplateType.Struct) { persistentAttributeInfos.Add(GetPersistentKeyAttribute(column)); } } if (!column.Nullable && !column.InPrimaryKey) { persistentAttributeInfos.Add(GetPersistentRuleRequiredFieldAttribute(column)); } if (dataTypeMapper.GetDataType(column) == DBColumnType.String) { persistentAttributeInfos.Add(GetPersistentSizeAttribute(column)); } if (IsSimpleForeignKey(column) || ((IsCompoundPrimaryKey(owner, column) && column.IsForeignKey))) persistentAttributeInfos.Add(GetPersistentAssociationAttribute(column)); // if (owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType!=TemplateType.Struct) var persistentPersistentAttribute = GetPersistentPersistentAttribute(column.Name); if (IsSimpleForeignKey(column) && IsCompoundForeignKey(column)) persistentPersistentAttribute.MapTo = String.Empty; persistentAttributeInfos.Add(persistentPersistentAttribute); return persistentAttributeInfos; }
public MemberAttributeGenerator(MemberGeneratorInfo memberGeneratorInfo, ClassGeneratorInfo classGeneratorInfo) { _objectSpace = XPObjectSpace.FindObjectSpaceByObject(memberGeneratorInfo.PersistentMemberInfo); _persistentMemberInfo = memberGeneratorInfo.PersistentMemberInfo; _column = memberGeneratorInfo.DbColumn; _isPrimaryKey = CalculatePrimaryKey(memberGeneratorInfo, classGeneratorInfo); _dbTable = classGeneratorInfo.DbTable; }
public void CreateExtraInfos(Column column, IPersistentMemberInfo persistentMemberInfo, ForeignKeyCalculator foreignKeyCalculator) { var persistentReferenceMemberInfo = (IPersistentReferenceMemberInfo)persistentMemberInfo; if (persistentMemberInfo.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.XPOneToOnePropertyMember) { CreateTemplateInfo(persistentReferenceMemberInfo, column, foreignKeyCalculator); } else if (!column.InPrimaryKey && persistentMemberInfo.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.XPReadWritePropertyMember) CreateCollection(persistentReferenceMemberInfo, persistentReferenceMemberInfo.Owner); }
static string GetPropertyType(IPersistentMemberInfo persistentMemberInfo){ if (persistentMemberInfo is IPersistentCoreTypeMemberInfo) return Type.GetType("System."+((IPersistentCoreTypeMemberInfo)persistentMemberInfo).DataType).FullName; if (persistentMemberInfo is IPersistentReferenceMemberInfo) return ((IPersistentReferenceMemberInfo) persistentMemberInfo).ReferenceTypeFullName; if (persistentMemberInfo is IPersistentCollectionMemberInfo) return ((IPersistentCollectionMemberInfo)persistentMemberInfo).CollectionTypeFullName; throw new NotImplementedException(persistentMemberInfo.GetType().FullName); }
private static XPMemberInfo CreateMemberCore(IPersistentMemberInfo info) { if (info is IPersistentCollectionMemberInfo) return info.Owner.PersistentTypeClassInfo.CreateMember(info.Name, typeof(XPCollection), true); if (info is IPersistentCoreTypeMemberInfo) return info.Owner.PersistentTypeClassInfo.CreateMember(info.Name, Type.GetType("System." + ((IPersistentCoreTypeMemberInfo)info).DataType, true)); if (info is IPersistentReferenceMemberInfo) { var xpClassInfo = info.Owner.PersistentTypeClassInfo.Dictionary.GetClassInfo(((IPersistentReferenceMemberInfo)info).ReferenceType); return info.Owner.PersistentTypeClassInfo.CreateMember(info.Name, xpClassInfo); } throw new NotImplementedException(info.GetType().FullName); }
public static string GenerateCode(IPersistentMemberInfo persistentMemberInfo) { if (persistentMemberInfo.CodeTemplateInfo.TemplateInfo != null) { string code = persistentMemberInfo.CodeTemplateInfo.TemplateInfo.TemplateCode; if (code != null) { code = code.Replace("$TYPEATTRIBUTES$", GetAttributesCode(persistentMemberInfo)); code = code.Replace("$PROPERTYNAME$", persistentMemberInfo.Name); code = code.Replace("$PROPERTYTYPE$", GetPropertyType(persistentMemberInfo)); } return code; } return null; }
static string GetPropertyTypeCode(IPersistentMemberInfo persistentMemberInfo) { if (persistentMemberInfo is IPersistentCoreTypeMemberInfo) { return(GetCorePropertyTypeCode(persistentMemberInfo)); } var persistentReferenceMemberInfo = persistentMemberInfo as IPersistentReferenceMemberInfo; if (persistentReferenceMemberInfo != null) { return(CleanFullName((persistentReferenceMemberInfo).ReferenceTypeFullName)); } var persistentCollectionMemberInfo = persistentMemberInfo as IPersistentCollectionMemberInfo; if (persistentCollectionMemberInfo != null) { return(CleanFullName((persistentCollectionMemberInfo).CollectionTypeFullName)); } throw new NotImplementedException(persistentMemberInfo.GetType().FullName); }
public List <IPersistentAttributeInfo> Create(Column column, IPersistentMemberInfo owner, DataTypeMapper dataTypeMapper) { var persistentAttributeInfos = new List <IPersistentAttributeInfo>(); if (owner.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.XPOneToOnePropertyMember) { return(persistentAttributeInfos); } if (column.InPrimaryKey) { if (owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType != TemplateType.Struct) { persistentAttributeInfos.Add(GetPersistentKeyAttribute(column)); } } if (!column.Nullable && !column.InPrimaryKey) { persistentAttributeInfos.Add(GetPersistentRuleRequiredFieldAttribute(column)); } if (dataTypeMapper.GetDataType(column) == DBColumnType.String) { persistentAttributeInfos.Add(GetPersistentSizeAttribute(column)); } if (IsSimpleForeignKey(column) || ((IsCompoundPrimaryKey(owner, column) && column.IsForeignKey))) { persistentAttributeInfos.Add(GetPersistentAssociationAttribute(column)); } // if (owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType!=TemplateType.Struct) var persistentPersistentAttribute = GetPersistentPersistentAttribute(column.Name); if (IsSimpleForeignKey(column) && IsCompoundForeignKey(column)) { persistentPersistentAttribute.MapTo = String.Empty; } persistentAttributeInfos.Add(persistentPersistentAttribute); return(persistentAttributeInfos); }
private static string GetAttributesCode(IPersistentMemberInfo persistentMemberInfo) { return(string.Join(Environment.NewLine, persistentMemberInfo.TypeAttributes.Select(GenerateCode))); }
bool IsCompoundPrimaryKey(IPersistentMemberInfo owner, Column column) { return owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.Struct && column.InPrimaryKey; }
static string GetCorePropertyTypeCode(IPersistentMemberInfo persistentMemberInfo) { DBColumnType dbColumnType = ((IPersistentCoreTypeMemberInfo)persistentMemberInfo).DataType; switch (dbColumnType) { case DBColumnType.Boolean: return("bool"); case DBColumnType.Byte: return("byte"); case DBColumnType.SByte: return("sbyte"); case DBColumnType.Char: return("char"); case DBColumnType.Decimal: return("decimal"); case DBColumnType.Single: return("float"); case DBColumnType.Double: return("double"); case DBColumnType.Int32: return("int"); case DBColumnType.UInt32: return("uint"); case DBColumnType.Int16: return("short"); case DBColumnType.UInt16: return("ushort"); case DBColumnType.Int64: return("long"); case DBColumnType.UInt64: return("ulong"); case DBColumnType.String: return("string"); case DBColumnType.DateTime: return("DateTime"); case DBColumnType.Guid: return("Guid"); case DBColumnType.TimeSpan: return("TimeSpan"); case DBColumnType.ByteArray: return("byte[]"); default: return(dbColumnType.ToString()); } }
static string GetPropertyTypeCode(IPersistentMemberInfo persistentMemberInfo) { if (persistentMemberInfo is IPersistentCoreTypeMemberInfo) return GetCorePropertyTypeCode(persistentMemberInfo); if (persistentMemberInfo is IPersistentReferenceMemberInfo) return CleanFullName(((IPersistentReferenceMemberInfo)persistentMemberInfo).ReferenceTypeFullName); if (persistentMemberInfo is IPersistentCollectionMemberInfo) return CleanFullName(((IPersistentCollectionMemberInfo)persistentMemberInfo).CollectionTypeFullName); throw new NotImplementedException(persistentMemberInfo.GetType().FullName); }
static string GetMemberName(IPersistentMemberInfo persistentMemberInfo) { string memberName = CleanName(persistentMemberInfo.Name); if (persistentMemberInfo.Owner.Name == persistentMemberInfo.Name) memberName += "Member"; return memberName; }
static string GetCorePropertyTypeCode(IPersistentMemberInfo persistentMemberInfo) { DBColumnType dbColumnType = ((IPersistentCoreTypeMemberInfo)persistentMemberInfo).DataType; switch (dbColumnType) { case DBColumnType.Boolean: return "bool"; case DBColumnType.Byte: return "byte"; case DBColumnType.SByte: return "sbyte"; case DBColumnType.Char: return "char"; case DBColumnType.Decimal: return "decimal"; case DBColumnType.Single: return "float"; case DBColumnType.Double: return "double"; case DBColumnType.Int32: return "int"; case DBColumnType.UInt32: return "uint"; case DBColumnType.Int16: return "short"; case DBColumnType.UInt16: return "ushort"; case DBColumnType.Int64: return "long"; case DBColumnType.UInt64: return "ulong"; case DBColumnType.String: return "string"; case DBColumnType.DateTime: return "DateTime"; case DBColumnType.Guid: return "Guid"; case DBColumnType.TimeSpan: return "TimeSpan"; case DBColumnType.ByteArray: return "byte[]"; default: return dbColumnType.ToString(); } }
public MemberGeneratorInfo(IPersistentMemberInfo persistentMemberInfo, DBColumn dbColumn) : this() { _persistentMemberInfo = persistentMemberInfo; _dbColumn = dbColumn; }
private static void CreateMember(IPersistentMemberInfo info, Type type) { XPMemberInfo result = info.Owner.PersistentTypeClassInfo.FindMember(info.Name) ?? CreateMemberCore( info); CreateAttributes(result,info); }
private static void CreateMember(IPersistentMemberInfo info, Type type) { XPMemberInfo result = info.Owner.PersistentTypeClassInfo.FindMember(info.Name) ?? CreateMemberCore(info); CreateAttributes(result, info); }
public static void Init(this IPersistentMemberInfo persistentMemberInfo, Type codeTemplateType, CodeDomProvider codeDomProvider) { persistentMemberInfo.CodeTemplateInfo.CreateDefaultTemplate(persistentMemberInfo is IPersistentCollectionMemberInfo ? TemplateType.XPCollectionMember : TemplateType.XPReadWritePropertyMember, codeDomProvider); }
bool IsCompoundPrimaryKey(IPersistentMemberInfo owner, Column column) { return(owner.Owner.CodeTemplateInfo.CodeTemplate.TemplateType == TemplateType.Struct && column.InPrimaryKey); }
void AddAttributes(Column column, IPersistentMemberInfo persistentMemberInfo) { var persistentAttributeInfos = _attributeMapper.Create(column, persistentMemberInfo, _dataTypeMapper); foreach (var persistentAttributeInfo in persistentAttributeInfos) { persistentMemberInfo.TypeAttributes.Add(persistentAttributeInfo); } }
public static bool IsAssociation(this IPersistentMemberInfo persistentMemberInfo) { return(PersistentAttributeInfoQuery.Find <AssociationAttribute>(persistentMemberInfo) != null); }