Skip to content

Instantly share code, notes, and snippets.

@0xced
Created October 2, 2018 09:00
Show Gist options
  • Save 0xced/9d251f42ba3b782ef17e3adde712c567 to your computer and use it in GitHub Desktop.
Save 0xced/9d251f42ba3b782ef17e3adde712c567 to your computer and use it in GitHub Desktop.
Get invariant provider name from DbContext
using System.Data.Entity;
using System.Reflection;
namespace gist
{
public static class DbContextExtensions
{
public static string GetProviderName(this DbContext context)
{
var internalContextProperty = context.GetType().GetProperty("InternalContext", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
var internalContext = internalContextProperty?.GetValue(context);
var providerNameProperty = internalContext?.GetType().GetProperty("ProviderName", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (providerNameProperty?.GetValue(internalContext) is string providerName)
return providerName;
return null;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment