Skip to content

Commit ff66b31

Browse files
Add support to EFCore 9
1 parent 8d25ada commit ff66b31

File tree

9 files changed

+316
-2
lines changed

9 files changed

+316
-2
lines changed

EntityFrameworkExtras.EFCore7/EntityFrameworkExtras.EFCore7.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<DocumentationFile>bin\Release\net6.0\EntityFrameworkExtras.EFCore.xml</DocumentationFile>
1111
<SignAssembly>True</SignAssembly>
1212
<AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
13-
<Version>6.0.7</Version>
13+
<Version>7.0.7</Version>
1414
<Authors>ZZZ Projects &amp; Michael Rodda &amp; Craig Bovis</Authors>
1515
<Company>EntityFrameworkExtras.EFCore</Company>
1616
<Product>EntityFrameworkExtras.EFCore</Product>

EntityFrameworkExtras.EFCore8/EntityFrameworkExtras.EFCore8.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<DocumentationFile>bin\Release\net6.0\EntityFrameworkExtras.EFCore.xml</DocumentationFile>
1111
<SignAssembly>True</SignAssembly>
1212
<AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
13-
<Version>6.0.7</Version>
13+
<Version>8.0.7</Version>
1414
<Authors>ZZZ Projects &amp; Michael Rodda &amp; Craig Bovis</Authors>
1515
<Company>EntityFrameworkExtras.EFCore</Company>
1616
<Product>EntityFrameworkExtras.EFCore</Product>
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net8.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
<AssemblyName>EntityFrameworkExtras.EFCore</AssemblyName>
8+
<RootNamespace>EntityFrameworkExtras.EFCore</RootNamespace>
9+
<GenerateDocumentationFile>True</GenerateDocumentationFile>
10+
<DocumentationFile>bin\Release\net6.0\EntityFrameworkExtras.EFCore.xml</DocumentationFile>
11+
<SignAssembly>True</SignAssembly>
12+
<AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
13+
<Version>9.0.7</Version>
14+
<Authors>ZZZ Projects &amp; Michael Rodda &amp; Craig Bovis</Authors>
15+
<Company>EntityFrameworkExtras.EFCore</Company>
16+
<Product>EntityFrameworkExtras.EFCore</Product>
17+
<Description>EntityFrameworkExtras provides some useful additions to EntityFramework such as executing Stored Procedures with User-Defined Table Types and Output Parameters.</Description>
18+
</PropertyGroup>
19+
20+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
21+
<DefineConstants>TRACE;EFCORE</DefineConstants>
22+
</PropertyGroup>
23+
24+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
25+
<DefineConstants>TRACE;EFCORE</DefineConstants>
26+
</PropertyGroup>
27+
28+
<ItemGroup>
29+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.0" />
30+
</ItemGroup>
31+
32+
<Import Project="..\EntityFrameworkExtras.Shared\EntityFrameworkExtras.Shared.projitems" Label="Shared" />
33+
34+
</Project>
596 Bytes
Binary file not shown.

EntityFrameworkExtras.sln

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EntityFrameworkExtras.EFCor
5858
EndProject
5959
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EntityFrameworkExtras.EFCore8", "EntityFrameworkExtras.EFCore8\EntityFrameworkExtras.EFCore8.csproj", "{299B3967-8265-4905-9C47-1A2ED4E9E970}"
6060
EndProject
61+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFrameworkExtras.EFCore9", "EntityFrameworkExtras.EFCore9\EntityFrameworkExtras.EFCore9.csproj", "{D80C7239-4C90-D1C9-0C3B-AAA85EB16889}"
62+
EndProject
63+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Z.EntityFrameworkExtras.Lab.EFCore9", "Z.EntityFrameworkExtras.Lab.EFCore9\Z.EntityFrameworkExtras.Lab.EFCore9.csproj", "{92E4ECFB-E67F-47C4-B17E-BAF1655B507F}"
64+
EndProject
6165
Global
6266
GlobalSection(SolutionConfigurationPlatforms) = preSolution
6367
Debug|Any CPU = Debug|Any CPU
@@ -140,6 +144,14 @@ Global
140144
{299B3967-8265-4905-9C47-1A2ED4E9E970}.Debug|Any CPU.Build.0 = Debug|Any CPU
141145
{299B3967-8265-4905-9C47-1A2ED4E9E970}.Release|Any CPU.ActiveCfg = Release|Any CPU
142146
{299B3967-8265-4905-9C47-1A2ED4E9E970}.Release|Any CPU.Build.0 = Release|Any CPU
147+
{D80C7239-4C90-D1C9-0C3B-AAA85EB16889}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
148+
{D80C7239-4C90-D1C9-0C3B-AAA85EB16889}.Debug|Any CPU.Build.0 = Debug|Any CPU
149+
{D80C7239-4C90-D1C9-0C3B-AAA85EB16889}.Release|Any CPU.ActiveCfg = Release|Any CPU
150+
{D80C7239-4C90-D1C9-0C3B-AAA85EB16889}.Release|Any CPU.Build.0 = Release|Any CPU
151+
{92E4ECFB-E67F-47C4-B17E-BAF1655B507F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
152+
{92E4ECFB-E67F-47C4-B17E-BAF1655B507F}.Debug|Any CPU.Build.0 = Debug|Any CPU
153+
{92E4ECFB-E67F-47C4-B17E-BAF1655B507F}.Release|Any CPU.ActiveCfg = Release|Any CPU
154+
{92E4ECFB-E67F-47C4-B17E-BAF1655B507F}.Release|Any CPU.Build.0 = Release|Any CPU
143155
EndGlobalSection
144156
GlobalSection(SolutionProperties) = preSolution
145157
HideSolutionNode = FALSE
@@ -162,6 +174,7 @@ Global
162174
{4D2D8EE1-7738-4562-891F-D6C191BE47A0} = {9E15663E-75C8-43B6-8236-4847A2685D42}
163175
{382BF8B7-58A9-4574-9811-FB88FE4B6A93} = {9E15663E-75C8-43B6-8236-4847A2685D42}
164176
{299B3967-8265-4905-9C47-1A2ED4E9E970} = {9E15663E-75C8-43B6-8236-4847A2685D42}
177+
{D80C7239-4C90-D1C9-0C3B-AAA85EB16889} = {9E15663E-75C8-43B6-8236-4847A2685D42}
165178
EndGlobalSection
166179
GlobalSection(ExtensibilityGlobals) = postSolution
167180
SolutionGuid = {8FEFCD82-1FCB-4477-90F7-A935BF59298B}
@@ -186,6 +199,7 @@ Global
186199
EntityFrameworkExtras.Tests.Shared\EntityFrameworkExtras.Tests.Shared.projitems*{b0c9b99b-0c3c-4e72-85d7-12bcd185c067}*SharedItemsImports = 4
187200
EntityFrameworkExtras.Shared\EntityFrameworkExtras.Shared.projitems*{c36b51b1-a379-44dc-b3de-1b7a69536a2e}*SharedItemsImports = 5
188201
EntityFrameworkExtras.Shared\EntityFrameworkExtras.Shared.projitems*{c4c0a992-318d-4b77-b151-69e18b789a52}*SharedItemsImports = 5
202+
EntityFrameworkExtras.Shared\EntityFrameworkExtras.Shared.projitems*{d80c7239-4c90-d1c9-0c3b-aaa85eb16889}*SharedItemsImports = 5
189203
EndGlobalSection
190204
GlobalSection(SubversionScc) = preSolution
191205
Svn-Managed = True
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Data.SqlClient;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using Microsoft.Data.SqlClient;
8+
using Microsoft.EntityFrameworkCore;
9+
10+
namespace Z.EntityFrameworkExtras.Lab.EFCore9
11+
{
12+
class My
13+
{
14+
public static string DataBaseName = "LabExtra";
15+
16+
public static string ConnectionString =
17+
("Server=[REPLACE];Initial Catalog = [BD]; Integrated Security = true; Connection Timeout = 300; Persist Security Info=True;TrustServerCertificate=True;").Replace("[REPLACE]", Environment.MachineName).Replace("[BD]", DataBaseName);
18+
public static string ConnectionStringTimeOut =
19+
("Server=[REPLACE];Initial Catalog = [BD]; Integrated Security = true; Connection Timeout = 5; Persist Security Info=True;TrustServerCertificate=True;").Replace("[REPLACE]", Environment.MachineName).Replace("[BD]", DataBaseName);
20+
21+
public static void DeleteBD(DbContext context)
22+
{
23+
context.Database.EnsureDeleted();
24+
}
25+
26+
public static void CreateBD(DbContext context)
27+
{
28+
context.Database.EnsureDeleted();
29+
context.Database.EnsureCreated();
30+
}
31+
}
32+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace Z.EntityFrameworkExtras.Lab.EFCore9
2+
{
3+
internal class Program
4+
{
5+
static void Main(string[] args)
6+
{
7+
Request_storeProcedure_Transaction.Execute();
8+
}
9+
}
10+
}
Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Data;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using System.Transactions;
8+
using EntityFrameworkExtras.EFCore;
9+
using Microsoft.Data.SqlClient;
10+
using Microsoft.EntityFrameworkCore;
11+
using Microsoft.EntityFrameworkCore.Storage;
12+
13+
namespace Z.EntityFrameworkExtras.Lab.EFCore9
14+
{
15+
class Request_storeProcedure_Transaction
16+
{
17+
public static void Execute()
18+
{
19+
// Create BD
20+
using (var context = new EntityContext())
21+
{
22+
My.CreateBD(context);
23+
}
24+
25+
// CLEAN
26+
using (var context = new EntityContext())
27+
{
28+
context.EntitySimples.RemoveRange(context.EntitySimples);
29+
30+
context.SaveChanges();
31+
}
32+
33+
// SEED
34+
using (var context = new EntityContext())
35+
{
36+
for (int i = 0; i < 3; i++)
37+
{
38+
context.EntitySimples.Add(new EntitySimple { ColumnInt = i });
39+
}
40+
41+
context.SaveChanges();
42+
}
43+
44+
45+
46+
// TEST
47+
using (var context = new EntityContext())
48+
{
49+
var connection = context.Database.GetDbConnection();
50+
connection.Open();
51+
using (var commande = connection.CreateCommand())
52+
{
53+
commande.CommandText = @"
54+
if exists (select 1 from sys.procedures where name = 'PROC_Get_EntitySimple')
55+
BEGIN
56+
DROP PROCEDURE [dbo].[PROC_Get_EntitySimple]
57+
END
58+
";
59+
commande.ExecuteNonQuery();
60+
}
61+
62+
using (var commande = connection.CreateCommand())
63+
{
64+
commande.CommandText = @"
65+
CREATE PROCEDURE [dbo].[PROC_Get_EntitySimple]
66+
67+
@ParameterID INT ,
68+
@ParameterInt INT = NULL OUTPUT
69+
70+
71+
AS
72+
BEGIN
73+
update EntitySimples
74+
Set ColumnInt = @ParameterID ;
75+
76+
Set @ParameterInt = @ParameterID +1
77+
END
78+
";
79+
commande.ExecuteNonQuery();
80+
}
81+
82+
using (var commande = connection.CreateCommand())
83+
{
84+
commande.CommandText = @"
85+
CREATE PROCEDURE [dbo].[PROC_Get_EntitySimple2]
86+
87+
@ParameterID INT ,
88+
@ParameterInt INT = NULL OUTPUT
89+
90+
91+
AS
92+
BEGIN
93+
update EntitySimples
94+
Set ColumnInt = @ParameterID ;
95+
96+
Set @ParameterInt = @ParameterID +1
97+
98+
select * from EntitySimples
99+
END
100+
";
101+
commande.ExecuteNonQuery();
102+
}
103+
104+
}
105+
106+
// TEST
107+
using (var context = new EntityContext())
108+
{
109+
var proc_Get_EntitySimple = new Proc_Get_EntitySimple() { ParameterID = 2 };
110+
111+
using (var tran = new TransactionScope())
112+
{
113+
context.Database.ExecuteStoredProcedure(proc_Get_EntitySimple);
114+
}
115+
116+
var transaction = context.Database.BeginTransaction();
117+
118+
var list2 = context.Database.ExecuteStoredProcedure<EntitySimple>(proc_Get_EntitySimple);
119+
120+
context.Database.ExecuteStoredProcedure(proc_Get_EntitySimple);
121+
122+
transaction.Rollback();
123+
124+
var list = context.EntitySimples.ToList();
125+
}
126+
127+
// TEST
128+
using (var context = new EntityContext())
129+
{
130+
var proc_Get_EntitySimple = new Proc_Get_EntitySimple2() { ParameterID = 2 };
131+
var transaction = context.Database.BeginTransaction();
132+
context.Database.ExecuteStoredProcedure<EntitySimple>(proc_Get_EntitySimple);
133+
134+
135+
transaction.Rollback();
136+
var lisa = context.EntitySimples.ToList();
137+
138+
139+
var list = context.EntitySimples.ToList();
140+
}
141+
142+
using (var context = new EntityContext())
143+
{
144+
var proc_Get_EntitySimple = new Proc_Get_EntitySimple2() { ParameterID = 2 };
145+
146+
147+
using (var tran = new TransactionScope())
148+
{
149+
context.Database.ExecuteStoredProcedure<EntitySimple>(proc_Get_EntitySimple);
150+
}
151+
var list = context.EntitySimples.ToList();
152+
}
153+
154+
using (var context = new EntityContext())
155+
{
156+
var proc_Get_EntitySimple = new Proc_Get_EntitySimple2() { ParameterID = 2 };
157+
using (var tran = new TransactionScope())
158+
{
159+
context.Database.ExecuteStoredProcedure<EntitySimple>(proc_Get_EntitySimple);
160+
tran.Complete();
161+
}
162+
163+
var list = context.EntitySimples.ToList();
164+
}
165+
}
166+
167+
public class EntityContext : DbContext
168+
{
169+
public EntityContext() : base( )
170+
{
171+
}
172+
173+
public DbSet<EntitySimple> EntitySimples { get; set; }
174+
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
175+
{
176+
optionsBuilder.UseSqlServer(new SqlConnection(My.ConnectionString));
177+
178+
base.OnConfiguring(optionsBuilder);
179+
}
180+
181+
}
182+
183+
[StoredProcedure("PROC_Get_EntitySimple")]
184+
public class Proc_Get_EntitySimple
185+
{
186+
[StoredProcedureParameter(SqlDbType.Int, Direction = ParameterDirection.Output)]
187+
public int ParameterInt { get; set; }
188+
189+
[StoredProcedureParameter(SqlDbType.Int, Direction = ParameterDirection.Input)]
190+
public int ParameterID { get; set; }
191+
}
192+
193+
[StoredProcedure("PROC_Get_EntitySimple2")]
194+
public class Proc_Get_EntitySimple2
195+
{
196+
[StoredProcedureParameter(SqlDbType.Int, Direction = ParameterDirection.Output)]
197+
public int ParameterInt { get; set; }
198+
199+
[StoredProcedureParameter(SqlDbType.Int, Direction = ParameterDirection.Input)]
200+
public int ParameterID { get; set; }
201+
}
202+
203+
public class EntitySimple
204+
{
205+
public int ID { get; set; }
206+
public int ColumnInt { get; set; }
207+
public String? ColumnString { get; set; }
208+
}
209+
}
210+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net9.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<ProjectReference Include="..\EntityFrameworkExtras.EFCore9\EntityFrameworkExtras.EFCore9.csproj" />
12+
</ItemGroup>
13+
14+
</Project>

0 commit comments

Comments
 (0)