private void LoadUniqueKeys() { // Get foreign keys for table in context. var tableUniqueKeys = Database.UniqueKeys.AsEnumerable() .Where( uniqueKey => uniqueKey.Field <string>("table_name") == SqlName && uniqueKey.Field <string>("table_schema_name") == Schema ).ToList(); // If none, return. if (tableUniqueKeys.Any() == false) { return; } // Group uniqe key name/columns pair. var uniqueGroup = tableUniqueKeys .GroupBy(x => x.Field <string>("unique_key_name")) .ToDictionary(g => g.Key, g => g.Select(x => x)); // For each group load key. foreach (var group in uniqueGroup) { var uniqueColumns = group.Value; UniqueKey uniqueKey = new UniqueKey(uniqueColumns, this); UniqueKeys.GetOrAdd(uniqueKey.Name, uniqueKey); } }