protected virtual string GetColumnName(IModelInspector modelInspector, PropertyPath member) { string defaultColumnName = member.ToColumnName(); string columnPrefix = null; string columnName = null; Type currentType = member.LocalMember.ReflectedType; bool walkToParent = modelInspector.IsTablePerClassHierarchy(currentType); while (currentType != null && currentType != typeof(object)) { ModelMetaData modelMetaData; if (ModelMetaDatasByType.TryGetValue(currentType, out modelMetaData)) { columnPrefix = modelMetaData.ColumnPrefix; modelMetaData.ColumnNames.TryGetValue(defaultColumnName, out columnName); break; } currentType = walkToParent ? currentType.BaseType : null; } string result = string.Concat(columnPrefix, columnName ?? GetIdentifier(defaultColumnName)); return(result); }
protected virtual string GetTableName(IModelInspector modelInspector, Type type) { ModelMetaData modelMetaData; string tableName = null; if (ModelMetaDatasByType.TryGetValue(type, out modelMetaData)) { tableName = modelMetaData.TableName; } string result = tableName ?? GetIdentifier(type.Name); return(result); }
public virtual string GetVersionColumnName(IModelInspector modelInspector, Type type) { string defaultColumnName = @"PersistenceVersion"; string columnPrefix = null; string versionColumnName = null; ModelMetaData modelMetaData; // ReSharper disable once AssignNullToNotNullAttribute if (ModelMetaDatasByType.TryGetValue(type, out modelMetaData)) { columnPrefix = modelMetaData.ColumnPrefix; versionColumnName = modelMetaData.Version; } string result = string.Concat(columnPrefix, versionColumnName ?? GetIdentifier(defaultColumnName)); return(result); }
protected virtual string GetKeyColumnName(IModelInspector modelInspector, Type type, bool foreignKey) { ModelMetaData modelMetaData; string columnPrefix = null; string tableName = null; if (ModelMetaDatasByType.TryGetValue(type, out modelMetaData)) { tableName = modelMetaData.TableName; columnPrefix = modelMetaData.ColumnPrefix; } string result; PrimaryKeyTypeEnum primaryKeyType = foreignKey ? PrimaryKeyTypeEnum.TYPE_ID : PrimaryKeyType; switch (primaryKeyType) { case PrimaryKeyTypeEnum.ID: result = string.Concat(columnPrefix, GetIdentifier(@"Id")); break; case PrimaryKeyTypeEnum.TYPE_ID: if (string.IsNullOrWhiteSpace(tableName)) { result = string.Concat(columnPrefix, GetIdentifier(string.Concat(type.Name, @"Id"))); } else { result = UseCamelCaseUnderScoreForDbObjects ? string.Concat(columnPrefix, tableName, tableName.EndsWith(@"_") ? @"ID" : @"_ID") : string.Concat(columnPrefix, tableName, @"Id"); } break; default: throw new ArgumentOutOfRangeException(); } return(result); }