Когда я выполняю большой импорт из данных для ввода в 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.
Вы используете неправильные сигнатуры методов.
Public Shared Event Loaded As EventHandler(Of DbConfigurationLoadedEventArgs)
DbConfigurationLoadedEventArgs.ReplaceService(Of TService)
Public Sub ReplaceService(Of TService) (serviceInterceptor As Func(Of TService, Object, TService))
Поэтому код должен выглядеть примерно так:
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()))
Sub (sender As Object, e As DbConfigurationLoadedEventArgs)
Ссылка: msdn.microsoft.com/en-us/library/…