should only add public interfaces

If the interface is not public, the castle dynamic proxy will throw:
Castle.DynamicProxy.Generators.GeneratorException : Type
System.Data.Entity.Internal.Linq.IInternalQueryAdapter is not visible to
DynamicProxy. Can not create proxy for types that are not accessible.
Make the type public, or internal and mark your assembly with [assembly:
InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)]
attribute.