here's what i've got:
public partial class DbUtils
{
public static string GetCurrentCatalogName()
{
string catalogName = OriginalCatalogName;
Dictionary<string, string> catalogNames = getOverwritesDictionary();
if (catalogNames.ContainsKey(OriginalCatalogName))
{
catalogName = catalogNames[OriginalCatalogName];
if (string.IsNullOrEmpty(catalogName)) return OriginalCatalogName;
}
return catalogName;
}
public static string OriginalCatalogName
{
get {
if (_originalCatalogName == null)
{
_originalCatalogName = PersistenceInfoProviderSingleton.GetInstance().GetFieldPersistenceInfo("CustomerEntity", "IdCustomer").SourceCatalogName;
}
return _originalCatalogName;
}
}
private static string _originalCatalogName;
private static Dictionary<string, string> getOverwritesDictionary()
{
var obj = typeof(DynamicQueryEngine).InvokeMember("_catalogOverwrites", BindingFlags.GetField | BindingFlags.NonPublic | BindingFlags.Static, null, null, null);
return obj as Dictionary<string, string>;
}
}
Isn't there better way?
edit there's also bug in code i posted. If catalogowerwrite owerwrites catalog name to an empty string it uses catalog from connection string, not original catalog