using System.Collections.Concurrent; namespace BaseOUDAL.EFExtensions { /// /// Used to store table names /// // ReSharper disable once UnusedMember.Global public static class TableMapper { private static readonly ConcurrentDictionary TableNames = new ConcurrentDictionary(); internal static string GetTableName(Type type) { if (TableNames.TryGetValue(type.TypeHandle, out var name)) { return name; } var tableAttr = type.GetCustomAttributes(false).SingleOrDefault(attr => attr.GetType().Name == "TableAttribute") as dynamic; if (tableAttr != null) { name = tableAttr.Name; } else { name = type.IsInterface && type.Name.StartsWith("I") ? type.Name.Substring(1) : type.Name; } TableNames[type.TypeHandle] = name; return name; } } }