Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public class YdbDesignTimeServices : IDesignTimeServices
{
public void ConfigureDesignTimeServices(IServiceCollection serviceCollection)
{
serviceCollection.AddEntityFrameworkYdb();
serviceCollection.AddEntityFrameworkYdb(useYdbExecutionStrategy: false);

new EntityFrameworkRelationalDesignServicesBuilder(serviceCollection)
.TryAdd<IDatabaseModelFactory, YdbDatabaseModelFactory>()
Expand Down
13 changes: 10 additions & 3 deletions src/EFCore.Ydb/src/Extensions/YdbServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@ namespace EntityFrameworkCore.Ydb.Extensions;

public static class YdbServiceCollectionExtensions
{
public static IServiceCollection AddEntityFrameworkYdb(this IServiceCollection serviceCollection)
public static IServiceCollection AddEntityFrameworkYdb(
this IServiceCollection serviceCollection,
bool useYdbExecutionStrategy = true
)
{
new EntityFrameworkYdbServicesBuilder(serviceCollection)
var entityFrameworkServicesBuilder = new EntityFrameworkYdbServicesBuilder(serviceCollection)
.TryAdd<LoggingDefinitions, YdbLoggingDefinitions>()
.TryAdd<IDatabaseProvider, DatabaseProvider<YdbOptionsExtension>>()
.TryAdd<IRelationalTypeMappingSource, YdbTypeMappingSource>()
Expand All @@ -42,7 +45,6 @@ public static IServiceCollection AddEntityFrameworkYdb(this IServiceCollection s
.TryAdd<IHistoryRepository, YdbHistoryRepository>()
.TryAdd<IQueryableMethodTranslatingExpressionVisitorFactory,
YdbQueryableMethodTranslatingExpressionVisitorFactory>()
.TryAdd<IExecutionStrategyFactory, YdbExecutionStrategyFactory>()
.TryAdd<IMethodCallTranslatorProvider, YdbMethodCallTranslatorProvider>()
.TryAdd<IAggregateMethodCallTranslatorProvider, YdbAggregateMethodCallTranslatorProvider>()
.TryAdd<IMemberTranslatorProvider, YdbMemberTranslatorProvider>()
Expand All @@ -60,6 +62,11 @@ public static IServiceCollection AddEntityFrameworkYdb(this IServiceCollection s
.TryAddScoped<IDbCommandInterceptor, YdbCommandInterceptor>())
.TryAddCoreServices();

if (useYdbExecutionStrategy)
{
entityFrameworkServicesBuilder.TryAdd<IExecutionStrategyFactory, YdbExecutionStrategyFactory>();
}

return serviceCollection;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using EntityFrameworkCore.Ydb.FunctionalTests.TestUtilities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage;

Check warning on line 4 in src/EFCore.Ydb/test/EntityFrameworkCore.Ydb.FunctionalTests/Migrations/YdbMigrationsInfrastructureTest.cs

View workflow job for this annotation

GitHub Actions / Inspection (./src/YdbSdk.sln)

"[RedundantUsingDirective] Using directive is not required by the code and can be safely removed" on /home/runner/work/ydb-dotnet-sdk/ydb-dotnet-sdk/src/EFCore.Ydb/test/EntityFrameworkCore.Ydb.FunctionalTests/Migrations/YdbMigrationsInfrastructureTest.cs(4,1)
using Microsoft.EntityFrameworkCore.TestUtilities;
using Microsoft.Extensions.DependencyInjection;
using Xunit;
Expand All @@ -17,7 +17,7 @@

protected override IServiceCollection AddServices(IServiceCollection serviceCollection)
{
serviceCollection.AddScoped<IExecutionStrategyFactory, NonRetryingExecutionStrategyFactory>();
YdbTestStoreFactory.Instance.UseYdbExecutionStrategy = false;
return base.AddServices(serviceCollection);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@ namespace EntityFrameworkCore.Ydb.FunctionalTests.TestUtilities;
public class YdbTestStoreFactory(string? additionalSql = null) : RelationalTestStoreFactory
{
public static YdbTestStoreFactory Instance { get; } = new();

private readonly string? _scriptPath = null;

public bool UseYdbExecutionStrategy { get; set; } = true;

public override TestStore Create(string storeName) =>
new YdbTestStore(storeName, _scriptPath, additionalSql);

public override TestStore GetOrCreate(string storeName)
=> new YdbTestStore(storeName, _scriptPath, additionalSql);

public override IServiceCollection AddProviderServices(IServiceCollection serviceCollection)
=> serviceCollection.AddEntityFrameworkYdb();
=> serviceCollection.AddEntityFrameworkYdb(UseYdbExecutionStrategy);
}
Loading