diff --git a/src/SqlServerToMermaid/SchemaReader.cs b/src/SqlServerToMermaid/SchemaReader.cs index c4d5995..4511c99 100644 --- a/src/SqlServerToMermaid/SchemaReader.cs +++ b/src/SqlServerToMermaid/SchemaReader.cs @@ -41,14 +41,15 @@ public static async Task Read(SqlConnection connection, Cancel cancel) }) .ToList(); + var validTables = db.Tables + .Where(_ => !_.IsSystemObject) + .Select(_ => (_.Schema, _.Name)) + .ToHashSet(); + var foreignKeys = db.Tables .Where(_ => !_.IsSystemObject) .SelectMany(_ => _.ForeignKeys) - .Where(_ => - { - var referenced = db.Tables[_.ReferencedTable, _.ReferencedTableSchema]; - return referenced is not null && !referenced.IsSystemObject; - }) + .Where(_ => validTables.Contains((_.ReferencedTableSchema, _.ReferencedTable))) .Select(_ => new ForeignKey( Name: _.Name, ParentSchema: _.Parent.Schema,