Я понимаю, что подобный вопрос задавался несколько раз, и я попробовал рекомендации по этим вопросам безуспешно.
Я использую платформу сущностей (4.3) и использую SQL Azure (в базе данных объединения). Я хотел бы иметь возможность регистрировать SQL, который генерируется структурой сущностей.
Я использовал Entity Profiler Framework , и хотя это полезно во время разработки, я не уверен, что это будет полезно во время производства.
Я не могу использовать SQL Profiler, поскольку это база данных SQL Azure.
Я попытался использовать EFTracingProvider и выполнить шаги в здесь . К сожалению, когда я пытаюсь выполнить свою первую команду (которая использует соответствующую федерацию), я получаю исключение, указывающее, что «указанный метод не поддерживается».
Код, который генерирует ошибку, следующий:
public MyContext(int tenantId)
: base(CreateTracingConnection("TheDb"), true)
{
const string FederationCmdText =
"USE FEDERATION TenantFederation(CustomerId = {0}) WITH RESET, FILTERING=ON";
((IObjectContextAdapter)this).ObjectContext.EnableTracing();
((IObjectContextAdapter)this).ObjectContext.Connection.Open();
// This is the line which throws the exception
this.Database.ExecuteSqlCommand(string.Format(FederationCmdText, tenantId));
}
Вот исключение:
Specified method is not supported.
at EFProviderWrapperToolkit.DbConnectionWrapper.CreateDbCommand()
at System.Data.Common.DbConnection.CreateCommand()
...
Итак, вот мои вопросы:
- Является ли EFTracingProvider предпочтительным подходом для регистрации SQL-запросов (глобально)?
- Если так, есть идеи, почему я получаю вышеуказанное исключение?
- Если нет, есть ли другой механизм, который позволит мне регистрировать весь SQL, сгенерированный Entity Framework?
Спасибо за вашу помощь,
Eric