Я пытаюсь использовать CosmosDb на Ef Core 3.1, он работает, но моя цель - использовать перехватчик для введения простого условия аренды. Я не нашел много документации для космоса, но для sql Сервера (вначале я думал, что это может работать, так как ef Core - это слой, построенный сверху).
Сначала я добавлю новую зависимость:
<PackageReference Include="Microsoft.EntityFrameworkCore.Cosmos" Version="3.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.3" />
Так что я могу использовать простой класс:
public class HintCommandInterceptor : DbCommandInterceptor
{
public override InterceptionResult<DbDataReader> ReaderExecuting(
DbCommand command,
CommandEventData eventData,
InterceptionResult<DbDataReader> result)
{
Console.WriteLine(command.CommandText);
return result;
}
...
А на компоновщике после UseCosmos я добавляю: .AddInterceptors(new HintCommandInterceptor());
Не работает. Я пытаюсь переопределить все методы с помощью console.Writeline, но ничего не было зарегистрировано.
В конце я пришел к выводу, что просто с No Sql db (даже если он имеет интерфейс SQL) Перехватчики (или, скорее, DbCommandInterceptor) не работают, так как они определены в пакете, который, кажется, сделан для реляционного db:
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.3" />
Так что я пытался сделать это неправильно. Может быть, есть конкретный c способ сделать это без наследования от DbCommandInterceptor, или, может быть, нет для No Sql db, поэтому я должен создать свой собственный слой перед каждой операцией ввода / чтения.
Или, может быть, быть там простая ошибка или другой способ сделать это?