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;
}
}
}