Entity Framework 6 кэш второго уровня, конвертирование кода в vb.net

1

Когда я выполняю большой импорт из данных для ввода в sql с использованием структуры сущности, мой код должен проверять те же внешние ключи, которые приводят к повторяющимся командам для SQL-сервера. Я считаю, что мне нужно использовать кеш второго уровня, я пытался использовать efcache из nuget, но поскольку я использую только vb.net, у меня возникают проблемы с преобразованием следующего кода С#:

public class Configuration : DbConfiguration
{
  public Configuration()
  {
    var transactionHandler = new CacheTransactionHandler(new InMemoryCache());

    AddInterceptor(transactionHandler);

    Loaded +=
      (sender, args) => args.ReplaceService<DbProviderServices>(
        (s, _) => new CachingProviderServices(s, transactionHandler, 
          new DefaultCachingPolicy()));
  }
}

на vb

Imports System.Data.Entity
Imports EFCache
Public Class Configuration
    Inherits DbConfiguration
    Public Sub New()
        Dim transactionHandler = New CacheTransactionHandler(New InMemoryCache())

        AddInterceptor(transactionHandler)

        AddHandler Loaded, Function(sender, args) args.ReplaceService(Of 
         DbProviderServices)(Function(s, _) New CachingProviderServices(s, 
         transactionHandler, New DefaultCachingPolicy()))
    End Sub
End Class

Я понимаю, что мне нужно изменить С# + = на addhandler, но он не распознает dbproviderservices, подчеркивание _ и DefaultCachingPolicy.

  • 0
    Вариант строгий? Я думаю, что правильной сигнатурой метода является Sub (sender As Object, e As DbConfigurationLoadedEventArgs) Ссылка: msdn.microsoft.com/en-us/library/…
  • 1
    Подчеркивание само по себе не является допустимым идентификатором VB - вам придется его переименовать.
Теги:
entity-framework
caching

1 ответ

1
Лучший ответ

Вы используете неправильные сигнатуры методов.

Поэтому код должен выглядеть примерно так:

AddHandler Loaded,
    Sub(sender As Object, e As DbConfigurationLoadedEventArgs)
        e.ReplaceService(Of DbProviderServices)(
            Function(serviceInterceptor As DbProviderServices, o As Object)
                Return New CachingProviderServices(serviceInterceptor, transactionHandler, New DefaultCachingPolicy())
            End Function)
    End Sub

Компактная версия:

AddHandler Loaded, Sub(sender As Object, e As DbConfigurationLoadedEventArgs) e.ReplaceService(Of DbProviderServices)(Function(serviceInterceptor As DbProviderServices, o As Object) New CachingProviderServices(serviceInterceptor, transactionHandler, New DefaultCachingPolicy()))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню