示例#1
0
        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);
            }
        }