Skip to content

Commit 9ad15c1

Browse files
author
zzzprojects
committed
Update to v1.5.5
Fix DbType parameter for EF6
1 parent 3830534 commit 9ad15c1

File tree

58 files changed

+916
-181
lines changed

Some content is hidden

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

58 files changed

+916
-181
lines changed

src/Z.EntityFramework.Plus.EF5.NET40/BatchDelete/BatchDelete.cs

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -412,17 +412,15 @@ internal DbCommand CreateCommand<T>(ObjectQuery query, SchemaEntityType<T> entit
412412
foreach (ObjectParameter parameter in parameterCollection)
413413
{
414414
var param = command.CreateParameter();
415-
param.ParameterName = parameter.Name;
416-
param.Value = parameter.Value ?? DBNull.Value;
415+
param.CopyFrom(parameter);
417416

418417
command.Parameters.Add(param);
419418
}
420419
#elif EF6
421420
foreach (DbParameter parameter in parameterCollection)
422421
{
423422
var param = command.CreateParameter();
424-
param.ParameterName = parameter.ParameterName;
425-
param.Value = parameter.Value ?? DBNull.Value;
423+
param.CopyFrom(parameter);
426424

427425
command.Parameters.Add(param);
428426
}
@@ -508,8 +506,7 @@ public DbCommand CreateCommand(IQueryable query, IEntityType entity)
508506
var parameter = queryContext.ParameterValues[relationalParameter.InvariantName];
509507

510508
var param = command.CreateParameter();
511-
param.ParameterName = relationalParameter.InvariantName;
512-
param.Value = parameter ?? DBNull.Value;
509+
param.CopyFrom(relationalParameter, parameter);
513510

514511
command.Parameters.Add(param);
515512
}
@@ -519,8 +516,7 @@ public DbCommand CreateCommand(IQueryable query, IEntityType entity)
519516
foreach (var parameter in parameterCollection)
520517
{
521518
var param = command.CreateParameter();
522-
param.ParameterName = parameter.Name;
523-
param.Value = parameter.Value ?? DBNull.Value;
519+
param.CopyFrom(parameter);
524520

525521
command.Parameters.Add(param);
526522
}
@@ -596,8 +592,7 @@ public DbCommand CreateCommand(IQueryable query, IEntityType entity)
596592
var parameter = queryContext.ParameterValues[relationalParameter.InvariantName];
597593

598594
var param = command.CreateParameter();
599-
param.ParameterName = relationalParameter.InvariantName;
600-
param.Value = parameter ?? DBNull.Value;
595+
param.CopyFrom(relationalParameter, parameter);
601596

602597
command.Parameters.Add(param);
603598
}
@@ -607,8 +602,7 @@ public DbCommand CreateCommand(IQueryable query, IEntityType entity)
607602
foreach (var parameter in parameterCollection)
608603
{
609604
var param = command.CreateParameter();
610-
param.ParameterName = parameter.Name;
611-
param.Value = parameter.Value ?? DBNull.Value;
605+
param.CopyFrom(parameter);
612606

613607
command.Parameters.Add(param);
614608
}

src/Z.EntityFramework.Plus.EF5.NET40/BatchUpdate/BatchUpdate.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -405,17 +405,15 @@ internal DbCommand CreateCommand<T>(ObjectQuery query, SchemaEntityType<T> entit
405405
foreach (ObjectParameter parameter in parameterCollection)
406406
{
407407
var param = command.CreateParameter();
408-
param.ParameterName = parameter.Name;
409-
param.Value = parameter.Value ?? DBNull.Value;
408+
param.CopyFrom(parameter);
410409

411410
command.Parameters.Add(param);
412411
}
413412
#elif EF6
414413
foreach (DbParameter parameter in parameterCollection)
415414
{
416415
var param = command.CreateParameter();
417-
param.ParameterName = parameter.ParameterName;
418-
param.Value = parameter.Value ?? DBNull.Value;
416+
param.CopyFrom(parameter);
419417

420418
command.Parameters.Add(param);
421419
}
@@ -545,19 +543,17 @@ public DbCommand CreateCommand(IQueryable query, IEntityType entity, List<Tuple<
545543
var parameter = queryContext.ParameterValues[relationalParameter.InvariantName];
546544

547545
var param = command.CreateParameter();
548-
param.ParameterName = relationalParameter.InvariantName;
549-
param.Value = parameter ?? DBNull.Value;
546+
param.CopyFrom(relationalParameter, parameter);
550547

551548
command.Parameters.Add(param);
552549
}
553550
#else
554-
// ADD Parameter
551+
// ADD Parameter
555552
var parameterCollection = relationalCommand.Parameters;
556553
foreach (var parameter in parameterCollection)
557554
{
558555
var param = command.CreateParameter();
559-
param.ParameterName = parameter.Name;
560-
param.Value = parameter.Value ?? DBNull.Value;
556+
param.CopyFrom(parameter);
561557

562558
command.Parameters.Add(param);
563559
}

src/Z.EntityFramework.Plus.EF5.NET40/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@
1818
[assembly: AssemblyCulture("")]
1919
[assembly: ComVisible(false)]
2020
[assembly: Guid("e4c2af73-caeb-4429-bcb6-0a359484e064")]
21-
[assembly: AssemblyVersion("1.5.4")]
22-
[assembly: AssemblyFileVersion("1.5.4")]
21+
[assembly: AssemblyVersion("1.5.5")]
22+
[assembly: AssemblyFileVersion("1.5.5")]

src/Z.EntityFramework.Plus.EF5.NET40/QueryFuture/QueryFutureBatch.cs

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,18 @@ public void ExecuteQueries()
7373
return;
7474
}
7575

76+
#if EFCORE
77+
if (IsInMemory)
78+
{
79+
foreach (var query in Queries)
80+
{
81+
query.ExecuteInMemory();
82+
}
83+
Queries.Clear();
84+
return;
85+
}
86+
#endif
87+
7688
if (Queries.Count == 1)
7789
{
7890
Queries[0].GetResultDirectly();
@@ -81,7 +93,7 @@ public void ExecuteQueries()
8193
}
8294

8395
#if EF5 || EF6
84-
var connection = (EntityConnection) Context.Connection;
96+
var connection = (EntityConnection)Context.Connection;
8597
#elif EFCORE
8698
if (IsInMemory)
8799
{
@@ -179,8 +191,8 @@ protected DbCommand CreateCommandCombined()
179191

180192
// CREATE parameter
181193
var dbParameter = command.CreateParameter();
182-
dbParameter.ParameterName = newValue;
183-
dbParameter.Value = parameter.Value;
194+
dbParameter.CopyFrom(parameter, newValue);
195+
184196
command.Parameters.Add(dbParameter);
185197

186198
// REPLACE parameter with new value
@@ -205,8 +217,8 @@ protected DbCommand CreateCommandCombined()
205217

206218
// CREATE parameter
207219
var dbParameter = command.CreateParameter();
208-
dbParameter.ParameterName = newValue;
209-
dbParameter.Value = parameter.Value;
220+
dbParameter.CopyFrom(parameter, newValue);
221+
210222
command.Parameters.Add(dbParameter);
211223

212224
// REPLACE parameter with new value
@@ -236,8 +248,8 @@ protected DbCommand CreateCommandCombined()
236248

237249
// CREATE parameter
238250
var dbParameter = command.CreateParameter();
239-
dbParameter.ParameterName = newValue;
240-
dbParameter.Value = parameter;
251+
dbParameter.CopyFrom(relationalParameter, parameter, newValue);
252+
241253
command.Parameters.Add(dbParameter);
242254

243255
// REPLACE parameter with new value

src/Z.EntityFramework.Plus.EF5.NET40/Z.EntityFramework.Plus.EF5.NET40.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@
203203
<Compile Include="_Internal\EFCore\IQueryable`\IsInMemoryQueryContext.cs" />
204204
<Compile Include="_Internal\EF\DbContext\DbContext.GetDbSetProperties.cs" />
205205
<Compile Include="_Internal\EF\DbContext\DbContext.MapReader.cs" />
206+
<Compile Include="_Internal\EF\DbParameter\DbParameter.CopyFrom.cs" />
206207
<Compile Include="_Internal\EF\IQueryable`\IQueryable.Order.cs" />
207208
<Compile Include="_Internal\EF\IQueryable`\IQueryable.OrderBy.cs" />
208209
<Compile Include="_Internal\EF\IQueryable`\IQueryable.OrderByDescending.cs" />
@@ -233,6 +234,7 @@
233234
<Compile Include="_Internal\Model\Model\Model.GetDatabaseFirst.cs" />
234235
<Compile Include="_Internal\Model\Model\Model.GetMappingModelString.cs" />
235236
<Compile Include="_Internal\Model\Model\Model.GetModelName.cs" />
237+
<Compile Include="_Internal\Model\Model\Model.GetModelNames.cs" />
236238
<Compile Include="_Internal\Model\Model\Model.GetModelXDocument.cs" />
237239
<Compile Include="_Internal\Model\Model\Model.GetStorageModelString.cs" />
238240
<Compile Include="_Internal\Model\Model\Model.SchemaAddIndex.cs" />
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// Description: Entity Framework Bulk Operations & Utilities (EF Bulk SaveChanges, Insert, Update, Delete, Merge | LINQ Query Cache, Deferred, Filter, IncludeFilter, IncludeOptimize | Audit)
2+
// Website & Documentation: https://github.com/zzzprojects/Entity-Framework-Plus
3+
// Forum & Issues: https://github.com/zzzprojects/EntityFramework-Plus/issues
4+
// License: https://github.com/zzzprojects/EntityFramework-Plus/blob/master/LICENSE
5+
// More projects: http://www.zzzprojects.com/
6+
// Copyright © ZZZ Projects Inc. 2014 - 2016. All rights reserved.
7+
8+
#if FULL || BATCH_DELETE || BATCH_UPDATE || QUERY_FUTURE || QUERY_INCLUDEOPTIMIZED
9+
10+
using System;
11+
using System.Data.Common;
12+
13+
#if EF5
14+
using System.Data.Objects;
15+
#elif EFCORE
16+
using Microsoft.EntityFrameworkCore.Storage;
17+
#endif
18+
19+
namespace Z.EntityFramework.Plus
20+
{
21+
internal static partial class InternalExtensions
22+
{
23+
public static void CopyFrom(this DbParameter @this, DbParameter from)
24+
{
25+
@this.DbType = from.DbType;
26+
@this.Direction = from.Direction;
27+
@this.IsNullable = from.IsNullable;
28+
@this.ParameterName = from.ParameterName;
29+
@this.Size = from.Size;
30+
31+
@this.Value = from.Value ?? DBNull.Value;
32+
}
33+
34+
public static void CopyFrom(this DbParameter @this, DbParameter from, string newParameterName)
35+
{
36+
@this.DbType = from.DbType;
37+
@this.Direction = from.Direction;
38+
@this.IsNullable = from.IsNullable;
39+
@this.ParameterName = newParameterName;
40+
@this.Size = from.Size;
41+
42+
@this.Value = from.Value ?? DBNull.Value;
43+
}
44+
45+
#if EF5
46+
public static void CopyFrom(this DbParameter @this, ObjectParameter from)
47+
{
48+
@this.ParameterName = from.Name;
49+
50+
@this.Value = from.Value ?? DBNull.Value;
51+
}
52+
53+
public static void CopyFrom(this DbParameter @this, ObjectParameter from, string newParameterName)
54+
{
55+
@this.ParameterName = newParameterName;
56+
57+
@this.Value = from.Value ?? DBNull.Value;
58+
}
59+
#endif
60+
#if EFCORE
61+
public static void CopyFrom(this DbParameter @this, IRelationalParameter from, object value)
62+
{
63+
@this.ParameterName = from.InvariantName;
64+
65+
@this.Value = value ?? DBNull.Value;
66+
}
67+
68+
public static void CopyFrom(this DbParameter @this, IRelationalParameter from, object value, string newParameterName)
69+
{
70+
@this.ParameterName = newParameterName;
71+
72+
@this.Value = value ?? DBNull.Value;
73+
}
74+
#endif
75+
}
76+
}
77+
#endif

src/Z.EntityFramework.Plus.EF5.NET40/_Internal/EF5_EF6/DbContext/DbContext.GetObjectContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// More projects: http://www.zzzprojects.com/
66
// Copyright © ZZZ Projects Inc. 2014 - 2016. All rights reserved.
77

8-
#if FULL || QUERY_FILTER
8+
#if FULL || BATCH_DELETE || BATCH_UPDATE || QUERY_FILTER
99
#if EF5 || EF6
1010

1111
#if EF5

src/Z.EntityFramework.Plus.EF5.NET40/_Internal/EF6/ObjectContext/GetInterceptionContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// More projects: http://www.zzzprojects.com/
66
// Copyright © ZZZ Projects Inc. 2014 - 2016. All rights reserved.
77

8-
#if FULL || QUERY_CACHE || QUERY_FILTER || QUERY_FUTURE || QUERY_INCLUDEOPTIMIZED
8+
#if FULL || BATCH_DELETE || BATCH_UPDATE || QUERY_CACHE || QUERY_FILTER || QUERY_FUTURE || QUERY_INCLUDEOPTIMIZED
99
#if EF6
1010
using System.Data.Entity.Core.Objects;
1111
using System.Data.Entity.Infrastructure.Interception;

src/Z.EntityFramework.Plus.EF5.NET40/_Internal/EF6/ObjectQuery/GetCommandTextAndParameters.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,22 @@ public static Tuple<string, DbParameterCollection> GetCommandTextAndParameters(t
4242
var interceptorsField = commandDispatcher.GetType().GetField("_interceptors", BindingFlags.Instance | BindingFlags.NonPublic);
4343
var interceptors = (List<IDbCommandInterceptor>) interceptorsField.GetValue(commandDispatcher);
4444

45-
interceptors.ForEach(i => i.ReaderExecuting(prepareEntityCommandBeforeExecution, new DbCommandInterceptionContext<DbDataReader>(objectQuery.Context.GetInterceptionContext())));
45+
var interceptionContexts = new Dictionary<IDbCommandInterceptor, DbCommandInterceptionContext<DbDataReader>>();
46+
47+
interceptors.ForEach(i => {
48+
var interceptionContext = new DbCommandInterceptionContext<DbDataReader>(objectQuery.Context.GetInterceptionContext());
49+
interceptionContexts[i] = interceptionContext;
50+
i.ReaderExecuting(prepareEntityCommandBeforeExecution, interceptionContext);
51+
});
4652

4753
sql = prepareEntityCommandBeforeExecution.CommandText;
4854
var parameters = prepareEntityCommandBeforeExecution.Parameters;
4955

56+
interceptors.ForEach(i => {
57+
var interceptionContext = interceptionContexts[i];
58+
i.ReaderExecuted(prepareEntityCommandBeforeExecution, interceptionContext);
59+
});
60+
5061
return new Tuple<string, DbParameterCollection>(sql, parameters);
5162
}
5263
}

src/Z.EntityFramework.Plus.EF5.NET40/_Internal/EFCore/IQueryable`/IsInMemoryQueryContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// More projects: http://www.zzzprojects.com/
66
// Copyright © ZZZ Projects Inc. 2014 - 2016. All rights reserved.
77

8-
#if FULL || BATCH_DELETE || QUERY_FUTURE
8+
#if FULL || BATCH_DELETE || BATCH_UPDATE || QUERY_FUTURE
99
#if EFCORE
1010

1111
using System;

0 commit comments

Comments
 (0)