Skip to content

Commit 3b0f72b

Browse files
authored
Merge pull request #1 from Clifftech123/develop
Initial solution and project scaffolding for EfCoreKit
2 parents 12174ec + 92e6573 commit 3b0f72b

61 files changed

Lines changed: 2633 additions & 15 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Directory.Build.props

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,16 @@
1-
1+
<Project>
2+
<PropertyGroup>
3+
<TargetFramework>net10.0</TargetFramework>
4+
<LangVersion>latest</LangVersion>
5+
<Nullable>enable</Nullable>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
8+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
9+
<Authors>EfCoreKit</Authors>
10+
<Company>EfCoreKit</Company>
11+
<Product>EfCoreKit</Product>
12+
<Copyright>Copyright © 2024 EfCoreKit</Copyright>
13+
<PackageLicenseExpression>MIT</PackageLicenseExpression>
14+
<PackageTags>efcore;entityframework;bulk;softdelete;audit;pagination;multitenancy</PackageTags>
15+
</PropertyGroup>
16+
</Project>

Directory.Packages.props

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,32 @@
1+
<Project>
2+
<PropertyGroup>
3+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
4+
</PropertyGroup>
15

6+
<!-- EF Core -->
7+
<ItemGroup>
8+
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.0" />
9+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.0" />
10+
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.0" />
11+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" />
12+
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="10.0.0" />
13+
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0" />
14+
<PackageVersion Include="MySql.EntityFrameworkCore" Version="10.0.1" />
15+
</ItemGroup>
16+
17+
<!-- DI -->
18+
<ItemGroup>
19+
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0" />
20+
</ItemGroup>
21+
22+
<!-- Testing -->
23+
<ItemGroup>
24+
<PackageVersion Include="xunit" Version="2.9.0" />
25+
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
26+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.0" />
27+
<PackageVersion Include="FluentAssertions" Version="6.12.0" />
28+
<PackageVersion Include="Moq" Version="4.20.72" />
29+
<PackageVersion Include="coverlet.collector" Version="6.0.2" />
30+
<PackageVersion Include="BenchmarkDotNet" Version="0.14.0" />
31+
</ItemGroup>
32+
</Project>

EfCoreKit.sln

Lines changed: 182 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,193 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio Version 18
4-
VisualStudioVersion = 18.3.11520.95 d18.3
4+
VisualStudioVersion = 18.3.11520.95
55
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
7+
EndProject
8+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit.Abstractions", "src\EfCoreKit.Abstractions\EfCoreKit.Abstractions.csproj", "{74F4C95D-F494-4006-9EFF-2E63667864EB}"
9+
EndProject
10+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit.Core", "src\EfCoreKit.Core\EfCoreKit.Core.csproj", "{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}"
11+
EndProject
12+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit.BulkOperations", "src\EfCoreKit.BulkOperations\EfCoreKit.BulkOperations.csproj", "{590DE75D-7489-4CF6-BF6D-B5ED57761A79}"
13+
EndProject
14+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit.SqlServer", "src\EfCoreKit.SqlServer\EfCoreKit.SqlServer.csproj", "{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}"
15+
EndProject
16+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit.PostgreSql", "src\EfCoreKit.PostgreSql\EfCoreKit.PostgreSql.csproj", "{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}"
17+
EndProject
18+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit.MySql", "src\EfCoreKit.MySql\EfCoreKit.MySql.csproj", "{126983C4-53B0-4BF5-91DF-05656D73F5CC}"
19+
EndProject
20+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit.Sqlite", "src\EfCoreKit.Sqlite\EfCoreKit.Sqlite.csproj", "{FB9AF877-2DA8-4880-BB56-13520EF9B82A}"
21+
EndProject
22+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit", "src\EfCoreKit\EfCoreKit.csproj", "{38D53281-3A3E-4431-92AA-2AF3EB1202CA}"
23+
EndProject
24+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}"
25+
EndProject
26+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit.Tests.Unit", "tests\EfCoreKit.Tests.Unit\EfCoreKit.Tests.Unit.csproj", "{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}"
27+
EndProject
28+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit.Tests.Integration", "tests\EfCoreKit.Tests.Integration\EfCoreKit.Tests.Integration.csproj", "{060B78C0-DC80-401E-88DE-6A50AABCFC90}"
29+
EndProject
30+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EfCoreKit.Tests.Benchmarks", "tests\EfCoreKit.Tests.Benchmarks\EfCoreKit.Tests.Benchmarks.csproj", "{368E42D8-D5A2-41AF-B681-5E7BD62441A6}"
31+
EndProject
632
Global
33+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
34+
Debug|Any CPU = Debug|Any CPU
35+
Debug|x64 = Debug|x64
36+
Debug|x86 = Debug|x86
37+
Release|Any CPU = Release|Any CPU
38+
Release|x64 = Release|x64
39+
Release|x86 = Release|x86
40+
EndGlobalSection
41+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
42+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
43+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
44+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Debug|x64.ActiveCfg = Debug|Any CPU
45+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Debug|x64.Build.0 = Debug|Any CPU
46+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Debug|x86.ActiveCfg = Debug|Any CPU
47+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Debug|x86.Build.0 = Debug|Any CPU
48+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
49+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Release|Any CPU.Build.0 = Release|Any CPU
50+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Release|x64.ActiveCfg = Release|Any CPU
51+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Release|x64.Build.0 = Release|Any CPU
52+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Release|x86.ActiveCfg = Release|Any CPU
53+
{74F4C95D-F494-4006-9EFF-2E63667864EB}.Release|x86.Build.0 = Release|Any CPU
54+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
55+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
56+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Debug|x64.ActiveCfg = Debug|Any CPU
57+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Debug|x64.Build.0 = Debug|Any CPU
58+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Debug|x86.ActiveCfg = Debug|Any CPU
59+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Debug|x86.Build.0 = Debug|Any CPU
60+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
61+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Release|Any CPU.Build.0 = Release|Any CPU
62+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Release|x64.ActiveCfg = Release|Any CPU
63+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Release|x64.Build.0 = Release|Any CPU
64+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Release|x86.ActiveCfg = Release|Any CPU
65+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC}.Release|x86.Build.0 = Release|Any CPU
66+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
67+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Debug|Any CPU.Build.0 = Debug|Any CPU
68+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Debug|x64.ActiveCfg = Debug|Any CPU
69+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Debug|x64.Build.0 = Debug|Any CPU
70+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Debug|x86.ActiveCfg = Debug|Any CPU
71+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Debug|x86.Build.0 = Debug|Any CPU
72+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Release|Any CPU.ActiveCfg = Release|Any CPU
73+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Release|Any CPU.Build.0 = Release|Any CPU
74+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Release|x64.ActiveCfg = Release|Any CPU
75+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Release|x64.Build.0 = Release|Any CPU
76+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Release|x86.ActiveCfg = Release|Any CPU
77+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79}.Release|x86.Build.0 = Release|Any CPU
78+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
79+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
80+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Debug|x64.ActiveCfg = Debug|Any CPU
81+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Debug|x64.Build.0 = Debug|Any CPU
82+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Debug|x86.ActiveCfg = Debug|Any CPU
83+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Debug|x86.Build.0 = Debug|Any CPU
84+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
85+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Release|Any CPU.Build.0 = Release|Any CPU
86+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Release|x64.ActiveCfg = Release|Any CPU
87+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Release|x64.Build.0 = Release|Any CPU
88+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Release|x86.ActiveCfg = Release|Any CPU
89+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5}.Release|x86.Build.0 = Release|Any CPU
90+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
91+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Debug|Any CPU.Build.0 = Debug|Any CPU
92+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Debug|x64.ActiveCfg = Debug|Any CPU
93+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Debug|x64.Build.0 = Debug|Any CPU
94+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Debug|x86.ActiveCfg = Debug|Any CPU
95+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Debug|x86.Build.0 = Debug|Any CPU
96+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Release|Any CPU.ActiveCfg = Release|Any CPU
97+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Release|Any CPU.Build.0 = Release|Any CPU
98+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Release|x64.ActiveCfg = Release|Any CPU
99+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Release|x64.Build.0 = Release|Any CPU
100+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Release|x86.ActiveCfg = Release|Any CPU
101+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412}.Release|x86.Build.0 = Release|Any CPU
102+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
103+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
104+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Debug|x64.ActiveCfg = Debug|Any CPU
105+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Debug|x64.Build.0 = Debug|Any CPU
106+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Debug|x86.ActiveCfg = Debug|Any CPU
107+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Debug|x86.Build.0 = Debug|Any CPU
108+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
109+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Release|Any CPU.Build.0 = Release|Any CPU
110+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Release|x64.ActiveCfg = Release|Any CPU
111+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Release|x64.Build.0 = Release|Any CPU
112+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Release|x86.ActiveCfg = Release|Any CPU
113+
{126983C4-53B0-4BF5-91DF-05656D73F5CC}.Release|x86.Build.0 = Release|Any CPU
114+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
115+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Debug|Any CPU.Build.0 = Debug|Any CPU
116+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Debug|x64.ActiveCfg = Debug|Any CPU
117+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Debug|x64.Build.0 = Debug|Any CPU
118+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Debug|x86.ActiveCfg = Debug|Any CPU
119+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Debug|x86.Build.0 = Debug|Any CPU
120+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Release|Any CPU.ActiveCfg = Release|Any CPU
121+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Release|Any CPU.Build.0 = Release|Any CPU
122+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Release|x64.ActiveCfg = Release|Any CPU
123+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Release|x64.Build.0 = Release|Any CPU
124+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Release|x86.ActiveCfg = Release|Any CPU
125+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A}.Release|x86.Build.0 = Release|Any CPU
126+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
127+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
128+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Debug|x64.ActiveCfg = Debug|Any CPU
129+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Debug|x64.Build.0 = Debug|Any CPU
130+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Debug|x86.ActiveCfg = Debug|Any CPU
131+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Debug|x86.Build.0 = Debug|Any CPU
132+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
133+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Release|Any CPU.Build.0 = Release|Any CPU
134+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Release|x64.ActiveCfg = Release|Any CPU
135+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Release|x64.Build.0 = Release|Any CPU
136+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Release|x86.ActiveCfg = Release|Any CPU
137+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA}.Release|x86.Build.0 = Release|Any CPU
138+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
139+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
140+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Debug|x64.ActiveCfg = Debug|Any CPU
141+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Debug|x64.Build.0 = Debug|Any CPU
142+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Debug|x86.ActiveCfg = Debug|Any CPU
143+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Debug|x86.Build.0 = Debug|Any CPU
144+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
145+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Release|Any CPU.Build.0 = Release|Any CPU
146+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Release|x64.ActiveCfg = Release|Any CPU
147+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Release|x64.Build.0 = Release|Any CPU
148+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Release|x86.ActiveCfg = Release|Any CPU
149+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC}.Release|x86.Build.0 = Release|Any CPU
150+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
151+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Debug|Any CPU.Build.0 = Debug|Any CPU
152+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Debug|x64.ActiveCfg = Debug|Any CPU
153+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Debug|x64.Build.0 = Debug|Any CPU
154+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Debug|x86.ActiveCfg = Debug|Any CPU
155+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Debug|x86.Build.0 = Debug|Any CPU
156+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Release|Any CPU.ActiveCfg = Release|Any CPU
157+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Release|Any CPU.Build.0 = Release|Any CPU
158+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Release|x64.ActiveCfg = Release|Any CPU
159+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Release|x64.Build.0 = Release|Any CPU
160+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Release|x86.ActiveCfg = Release|Any CPU
161+
{060B78C0-DC80-401E-88DE-6A50AABCFC90}.Release|x86.Build.0 = Release|Any CPU
162+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
163+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
164+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Debug|x64.ActiveCfg = Debug|Any CPU
165+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Debug|x64.Build.0 = Debug|Any CPU
166+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Debug|x86.ActiveCfg = Debug|Any CPU
167+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Debug|x86.Build.0 = Debug|Any CPU
168+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
169+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Release|Any CPU.Build.0 = Release|Any CPU
170+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Release|x64.ActiveCfg = Release|Any CPU
171+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Release|x64.Build.0 = Release|Any CPU
172+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Release|x86.ActiveCfg = Release|Any CPU
173+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6}.Release|x86.Build.0 = Release|Any CPU
174+
EndGlobalSection
7175
GlobalSection(SolutionProperties) = preSolution
8176
HideSolutionNode = FALSE
9177
EndGlobalSection
178+
GlobalSection(NestedProjects) = preSolution
179+
{74F4C95D-F494-4006-9EFF-2E63667864EB} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
180+
{6F8C3025-8CF0-4CD3-8B61-3D0DD22BF3EC} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
181+
{590DE75D-7489-4CF6-BF6D-B5ED57761A79} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
182+
{5E06C7FB-314F-4C2B-ADD1-DD2EA0BB7BF5} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
183+
{E7CE0DE2-E7CB-4380-ABC7-80A1B88D6412} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
184+
{126983C4-53B0-4BF5-91DF-05656D73F5CC} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
185+
{FB9AF877-2DA8-4880-BB56-13520EF9B82A} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
186+
{38D53281-3A3E-4431-92AA-2AF3EB1202CA} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
187+
{ABA0DD64-7CFD-4CC5-A679-F84EE57917DC} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
188+
{060B78C0-DC80-401E-88DE-6A50AABCFC90} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
189+
{368E42D8-D5A2-41AF-B681-5E7BD62441A6} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
190+
EndGlobalSection
10191
GlobalSection(ExtensibilityGlobals) = postSolution
11192
SolutionGuid = {B8DB5B8A-51FC-45B2-95FA-93D0708443EC}
12193
EndGlobalSection
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,13 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
12

3+
<PropertyGroup>
4+
<PackageId>EfCoreKit.Abstractions</PackageId>
5+
<Description>Public interfaces, models, and exceptions for EfCoreKit.</Description>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<PackageReference Include="Microsoft.EntityFrameworkCore" />
10+
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" />
11+
</ItemGroup>
12+
13+
</Project>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,29 @@
1+
namespace EfCoreKit.Abstractions.Exceptions;
12

3+
/// <summary>
4+
/// Thrown when a concurrency conflict occurs during an update or delete operation in Entity Framework Core.
5+
/// </summary>
6+
public sealed class ConcurrencyConflictException : EfCoreKitException
7+
{
8+
/// <summary>
9+
/// Gets the type name of the entity that caused the concurrency conflict.
10+
/// </summary>
11+
public string EntityType { get; }
12+
13+
/// <summary>
14+
/// Gets the identifier of the entity that caused the concurrency conflict.
15+
/// </summary>
16+
public object? EntityId { get; }
17+
18+
/// <summary>
19+
/// Initializes a new instance of the <see cref="ConcurrencyConflictException"/> class.
20+
/// </summary>
21+
/// <param name="entityType">The type name of the entity that caused the conflict.</param>
22+
/// <param name="entityId">The identifier of the entity that caused the conflict.</param>
23+
public ConcurrencyConflictException(string entityType, object? entityId)
24+
: base($"Concurrency conflict on entity '{entityType}' with ID '{entityId}'.")
25+
{
26+
EntityType = entityType;
27+
EntityId = entityId;
28+
}
29+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
namespace EfCoreKit.Abstractions.Exceptions;
2+
3+
/// <summary>
4+
/// Base exception for all exceptions thrown by EfCoreKit.
5+
/// All custom exceptions in EfCoreKit should inherit from this class.
6+
/// </summary>
7+
public abstract class EfCoreKitException : Exception
8+
{
9+
/// <summary>
10+
/// Initializes a new instance of the <see cref="EfCoreKitException"/> class with a specified error message.
11+
/// </summary>
12+
/// <param name="message">The message that describes the error.</param>
13+
protected EfCoreKitException(string message) : base(message)
14+
{ }
15+
16+
/// <summary>
17+
/// Initializes a new instance of the <see cref="EfCoreKitException"/> class with a specified
18+
/// error message and a reference to the inner exception that is the cause of this exception.
19+
/// </summary>
20+
/// <param name="message">The message that describes the error.</param>
21+
/// <param name="inner">The exception that is the cause of the current exception.</param>
22+
protected EfCoreKitException(string message, Exception inner) : base(message, inner) { }
23+
}

0 commit comments

Comments
 (0)