Ejemplo n.º 1
0
        public static IEnumerable <ReflectedForeignKeyInfo> GetForeignKeys(this MetadataWorkspace metadata,
                                                                           Type entityType)
        {
            var foreignKeys = metadata
                              .GetItems <AssociationType>(DataSpace.SSpace)
                              .SelectMany(a => a.ReferentialConstraints)
                              .Where(rc => rc.ToRole.Name == entityType.Name)
                              .Select(rc =>
            {
                var fromEntity = metadata.GetTypeFromName(rc.ToRole.Name);
                var toEntity   = metadata.GetTypeFromName(rc.FromRole.Name);
                return(new ReflectedForeignKeyInfo
                {
                    FromEntity = fromEntity,
                    FromTable = metadata.GetTableInfo(fromEntity),
                    FromColumn = rc.ToProperties[0].Name,
                    ToEntity = toEntity,
                    ToTable = metadata.GetTableInfo(toEntity),
                    ToColumn = rc.FromProperties[0].Name
                });
            });

            return(foreignKeys);
        }