public IEnumerable <ReferenceInfo> GetReferences(Type entityType) { foreach (var property in ReflectionUtil.GetAllProperties(entityType)) { var refType = m_convention.TryGetRefEntityType(property); if (refType == null) { continue; } string leftKeyColumnName; string rightKeyColumnName; if (typeof(IEnumerable).IsAssignableFrom(property.PropertyType)) { leftKeyColumnName = LocalKeyAttribute.GetLocalKeyName( property, m_convention.GetPrimaryKeyProperty(entityType).Name); rightKeyColumnName = ForeignKeyAttribute.GetForeignKeyName( property, $"{GetTableName(entityType)}Id"); } else { leftKeyColumnName = LocalKeyAttribute.GetLocalKeyName(property, $"{property.Name}Id"); rightKeyColumnName = ForeignKeyAttribute.GetForeignKeyName( property, m_convention.GetPrimaryKeyProperty(refType).Name); } yield return (new ReferenceInfo(property.Name, entityType, leftKeyColumnName, null, refType, rightKeyColumnName)); } }
public bool IsFkDefinedByanotherProperty(Type entityType, PropertyInfo columnProperty) { var props = ReflectionUtil.GetAllProperties(entityType); foreach (var p in props) { if (p.Name == ForeignKeyAttribute.GetForeignKeyName(p, null)) { return(true); } } return(false); }