private IEnumerable <Index> GetIndices(
            DbContext dbContext,
            MetadataWorkspace metadata,
            Type entityType)
        {
            var tableInfo         = metadata.GetTableInfo(entityType);
            var databaseIndexInfo = _sqlHelper.GetIndexInformation(dbContext, tableInfo.Name);
            var indexes           = _relationshipMapper.MapIndexes(databaseIndexInfo, tableInfo);

            return(indexes);
        }
        private IEnumerable <ForeignKey> GetForeignKeys(
            DbContext dbContext,
            MetadataWorkspace metadata,
            Type entityType)
        {
            var tableInfo = metadata.GetTableInfo(entityType);
            var databaseForeignKeyInfo   = _sqlHelper.GetForeignKeyInformation(dbContext, tableInfo.Schema, tableInfo.Name);
            var reflectionForeignKeyInfo = metadata.GetForeignKeys(entityType);
            var foreignKeys = _relationshipMapper.MapForeignKeys(databaseForeignKeyInfo, reflectionForeignKeyInfo);

            return(foreignKeys);
        }
예제 #3
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);
        }
        private IEnumerable <PrimaryKey> GetPrimaryKeys(
            DbContext dbContext,
            MetadataWorkspace metadata,
            Type entityType)
        {
            var tableInfo = metadata.GetTableInfo(entityType);
            var databasePrimaryKeyInfo   = _sqlHelper.GetPrimaryKeyInformation(dbContext, tableInfo.Name);
            var reflectionPrimaryKeyInfo = metadata.GetPrimaryKeys(entityType);
            var primaryKeys = _relationshipMapper.MapPrimaryKeys(databasePrimaryKeyInfo, reflectionPrimaryKeyInfo);

            foreach (var primaryKey in primaryKeys)
            {
                primaryKey.Table = tableInfo;
            }

            return(primaryKeys);
        }