Skip to content

Commit 46247b4

Browse files
author
fabien.menager
committed
Add SQLite support for bulk insert operations and improve identity handling
1 parent 53e2ce3 commit 46247b4

30 files changed

Lines changed: 320 additions & 253 deletions

EntityFrameworkCore.ExecuteInsert.sln

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22
Microsoft Visual Studio Solution File, Format Version 12.00
33
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFrameworkCore.ExecuteInsert", "src\EntityFrameworkCore.ExecuteInsert\EntityFrameworkCore.ExecuteInsert.csproj", "{56CA0AE2-6EAB-4394-9E06-132558551251}"
44
EndProject
5-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFrameworkCore.ExecuteInsert.MySql", "src\EntityFrameworkCore.ExecuteInsert.MySql\EntityFrameworkCore.ExecuteInsert.MySql.csproj", "{92E4337B-DBE5-4D88-8E9E-A3A61947EEFC}"
6-
EndProject
7-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFrameworkCore.ExecuteInsert.Oracle", "src\EntityFrameworkCore.ExecuteInsert.Oracle\EntityFrameworkCore.ExecuteInsert.Oracle.csproj", "{4B33E179-A559-4561-BBC5-DD040E3105ED}"
8-
EndProject
95
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFrameworkCore.ExecuteInsert.PostgreSql", "src\EntityFrameworkCore.ExecuteInsert.PostgreSql\EntityFrameworkCore.ExecuteInsert.PostgreSql.csproj", "{F37308A8-1C3C-44D2-9440-670DF76A8C31}"
106
EndProject
117
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFrameworkCore.ExecuteInsert.SqlServer", "src\EntityFrameworkCore.ExecuteInsert.SqlServer\EntityFrameworkCore.ExecuteInsert.SqlServer.csproj", "{8098F37B-FA5E-4BDB-B64A-00FBDE2001C9}"
@@ -16,7 +12,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{F8A83782
1612
EndProject
1713
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFrameworkCore.ExecuteInsert.Tests", "tests\EntityFrameworkCore.ExecuteInsert.Tests\EntityFrameworkCore.ExecuteInsert.Tests.csproj", "{EDCCED5F-D456-45E2-81A6-1077977F042B}"
1814
EndProject
19-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFrameworkCore.ExecuteInsert.Benchmark", "EntityFrameworkCore.ExecuteInsert.Benchmark\EntityFrameworkCore.ExecuteInsert.Benchmark.csproj", "{E4EB1C53-575C-45F8-924A-93DC42E8ACCA}"
15+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFrameworkCore.ExecuteInsert.Benchmark", "tests\EntityFrameworkCore.ExecuteInsert.Benchmark\EntityFrameworkCore.ExecuteInsert.Benchmark.csproj", "{E4EB1C53-575C-45F8-924A-93DC42E8ACCA}"
16+
EndProject
17+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFrameworkCore.ExecuteInsert.Sqlite", "src\EntityFrameworkCore.ExecuteInsert.Sqlite\EntityFrameworkCore.ExecuteInsert.Sqlite.csproj", "{450E859C-411F-4D67-A0B4-4E02C3D30E14}"
2018
EndProject
2119
Global
2220
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -28,14 +26,6 @@ Global
2826
{56CA0AE2-6EAB-4394-9E06-132558551251}.Debug|Any CPU.Build.0 = Debug|Any CPU
2927
{56CA0AE2-6EAB-4394-9E06-132558551251}.Release|Any CPU.ActiveCfg = Release|Any CPU
3028
{56CA0AE2-6EAB-4394-9E06-132558551251}.Release|Any CPU.Build.0 = Release|Any CPU
31-
{92E4337B-DBE5-4D88-8E9E-A3A61947EEFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
32-
{92E4337B-DBE5-4D88-8E9E-A3A61947EEFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
33-
{92E4337B-DBE5-4D88-8E9E-A3A61947EEFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
34-
{92E4337B-DBE5-4D88-8E9E-A3A61947EEFC}.Release|Any CPU.Build.0 = Release|Any CPU
35-
{4B33E179-A559-4561-BBC5-DD040E3105ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
36-
{4B33E179-A559-4561-BBC5-DD040E3105ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
37-
{4B33E179-A559-4561-BBC5-DD040E3105ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
38-
{4B33E179-A559-4561-BBC5-DD040E3105ED}.Release|Any CPU.Build.0 = Release|Any CPU
3929
{F37308A8-1C3C-44D2-9440-670DF76A8C31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
4030
{F37308A8-1C3C-44D2-9440-670DF76A8C31}.Debug|Any CPU.Build.0 = Debug|Any CPU
4131
{F37308A8-1C3C-44D2-9440-670DF76A8C31}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -52,14 +42,17 @@ Global
5242
{E4EB1C53-575C-45F8-924A-93DC42E8ACCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
5343
{E4EB1C53-575C-45F8-924A-93DC42E8ACCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
5444
{E4EB1C53-575C-45F8-924A-93DC42E8ACCA}.Release|Any CPU.Build.0 = Release|Any CPU
45+
{450E859C-411F-4D67-A0B4-4E02C3D30E14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
46+
{450E859C-411F-4D67-A0B4-4E02C3D30E14}.Debug|Any CPU.Build.0 = Debug|Any CPU
47+
{450E859C-411F-4D67-A0B4-4E02C3D30E14}.Release|Any CPU.ActiveCfg = Release|Any CPU
48+
{450E859C-411F-4D67-A0B4-4E02C3D30E14}.Release|Any CPU.Build.0 = Release|Any CPU
5549
EndGlobalSection
5650
GlobalSection(NestedProjects) = preSolution
5751
{56CA0AE2-6EAB-4394-9E06-132558551251} = {CBEBA2A8-79E0-412E-93C1-C88F4473D78B}
58-
{92E4337B-DBE5-4D88-8E9E-A3A61947EEFC} = {CBEBA2A8-79E0-412E-93C1-C88F4473D78B}
59-
{4B33E179-A559-4561-BBC5-DD040E3105ED} = {CBEBA2A8-79E0-412E-93C1-C88F4473D78B}
6052
{F37308A8-1C3C-44D2-9440-670DF76A8C31} = {CBEBA2A8-79E0-412E-93C1-C88F4473D78B}
6153
{8098F37B-FA5E-4BDB-B64A-00FBDE2001C9} = {CBEBA2A8-79E0-412E-93C1-C88F4473D78B}
6254
{EDCCED5F-D456-45E2-81A6-1077977F042B} = {F8A83782-311C-454D-8B97-B3FB86478BF4}
6355
{E4EB1C53-575C-45F8-924A-93DC42E8ACCA} = {F8A83782-311C-454D-8B97-B3FB86478BF4}
56+
{450E859C-411F-4D67-A0B4-4E02C3D30E14} = {CBEBA2A8-79E0-412E-93C1-C88F4473D78B}
6457
EndGlobalSection
6558
EndGlobal

src/EntityFrameworkCore.ExecuteInsert.MySql/EntityFrameworkCore.ExecuteInsert.MySql.csproj

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/EntityFrameworkCore.ExecuteInsert.MySql/MySqlBulkInsertExtensions.cs

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/EntityFrameworkCore.ExecuteInsert.MySql/MySqlBulkInsertProvider.cs

Lines changed: 0 additions & 56 deletions
This file was deleted.

src/EntityFrameworkCore.ExecuteInsert.Oracle/EntityFrameworkCore.ExecuteInsert.Oracle.csproj

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/EntityFrameworkCore.ExecuteInsert.Oracle/OracleBulkInsertExtensions.cs

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/EntityFrameworkCore.ExecuteInsert.Oracle/OracleBulkInsertProvider.cs

Lines changed: 0 additions & 81 deletions
This file was deleted.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<ItemGroup>
4+
<ProjectReference Include="..\EntityFrameworkCore.ExecuteInsert\EntityFrameworkCore.ExecuteInsert.csproj" />
5+
</ItemGroup>
6+
7+
<ItemGroup>
8+
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.11" />
9+
<PackageReference Include="JetBrains.Annotations" Version="2024.3.0" />
10+
</ItemGroup>
11+
12+
</Project>
13+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Microsoft.EntityFrameworkCore;
2+
using Microsoft.EntityFrameworkCore.Infrastructure;
3+
4+
namespace EntityFrameworkCore.ExecuteInsert.Sqlite;
5+
6+
public static class SqliteBulkInsertExtensions
7+
{
8+
public static DbContextOptionsBuilder UseExecuteInsertSqlite(this DbContextOptionsBuilder optionsBuilder)
9+
{
10+
var extension = optionsBuilder.Options.FindExtension<ExecuteInsertOptionsExtension<SqliteBulkInsertProvider>>() ?? new ExecuteInsertOptionsExtension<SqliteBulkInsertProvider>();
11+
((IDbContextOptionsBuilderInfrastructure)optionsBuilder).AddOrUpdateExtension(extension);
12+
return optionsBuilder;
13+
}
14+
}
15+

0 commit comments

Comments
 (0)