Skip to content

Commit 5467cdd

Browse files
committed
Bug fixes and NuGet publish
1 parent f3a5a8c commit 5467cdd

20 files changed

+106
-54
lines changed

EntityLite.sln

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EntityLite.ttinclude", "Ent
5050
EndProjectSection
5151
EndProject
5252
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1C5CB983-90E2-4787-97E9-50418F25E240}"
53-
ProjectSection(SolutionItems) = preProject
54-
Performance2.psess = Performance2.psess
55-
EndProjectSection
5653
EndProject
5754
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CodeProject", "CodeProject", "{F926993D-D441-4457-9A74-E1BC8A746B52}"
5855
ProjectSection(SolutionItems) = preProject

Samples/EntityLite.ttinclude/EntityGeneration.ttinclude

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ void RenderEntityRepositoryClass(DataLayerGeneration generation, EntitySetting e
187187
{
188188
}
189189

190-
public new DataService DataService
190+
public new <#= generation.DataServiceName #> DataService
191191
{
192192
get { return (<#= generation.DataServiceName #>) base.DataService; }
193193
set { base.DataService = value; }

Samples/Northwind.mdf

0 Bytes
Binary file not shown.

Samples/Northwind_log.ldf

0 Bytes
Binary file not shown.

inercya.EntityLite/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@
2929
// Build Number
3030
// Revision
3131
//
32-
[assembly: AssemblyVersion("1.0.4.0")]
33-
[assembly: AssemblyFileVersion("1.0.4.0")]
32+
[assembly: AssemblyVersion("1.0.7.0")]
33+
[assembly: AssemblyFileVersion("1.0.7.0")]

inercya.EntityLite/DataService.cs

Lines changed: 60 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,13 @@ protected internal virtual bool Delete(object entity)
362362
{
363363
if (entity == null) throw new ArgumentNullException("entity");
364364
var affectedRecords = this.ExecuteCommand( ()=>this.commandBuilder.GetDeleteCommand(entity),
365-
createCmd => createCmd().ExecuteNonQuery());
365+
createCmd =>
366+
{
367+
using (var cmd = createCmd())
368+
{
369+
return createCmd().ExecuteNonQuery();
370+
}
371+
});
366372
var identity = entity.TryGetId();
367373
if (identity != null) IdentityMap.Remove(entity.GetType(), identity);
368374
return affectedRecords > 0;
@@ -422,39 +428,42 @@ protected internal virtual void Insert(object entity)
422428

423429
this.ExecuteCommand(() => this.commandBuilder.GetInsertCommand(entity), createCmd =>
424430
{
425-
var cmd = createCmd();
426-
object autogeneratedFieldValue = null;
427-
string autogeneratedFieldName = entityMetadata.SequenceFieldName;
428-
if (entityMetadata.AutoIncrementFieldName != null) autogeneratedFieldName = entityMetadata.AutoIncrementFieldName;
429-
if (autogeneratedFieldName == null)
431+
using (var cmd = createCmd())
430432
{
431-
cmd.ExecuteNonQuery();
432-
}
433-
else if (EntityLiteProvider.AutoGeneratedFieldFetchMode == AutoGeneratedFieldFetchMode.OutputParameter)
434-
{
435-
cmd.ExecuteNonQuery();
436-
var autogeneratedFieldParam = cmd.Parameters.Cast<IDataParameter>().FirstOrDefault(x => x.Direction == ParameterDirection.Output);
437-
if (autogeneratedFieldParam == null)
433+
object autogeneratedFieldValue = null;
434+
string autogeneratedFieldName = entityMetadata.SequenceFieldName;
435+
if (entityMetadata.AutoIncrementFieldName != null) autogeneratedFieldName = entityMetadata.AutoIncrementFieldName;
436+
if (autogeneratedFieldName == null)
438437
{
439-
throw new InvalidOperationException(string.Format("There is no output parameter in insert command for autogenerated field {0}.{1},", entityType.Name, autogeneratedFieldName));
438+
cmd.ExecuteNonQuery();
439+
return true;
440440
}
441-
autogeneratedFieldValue = autogeneratedFieldParam.Value;
442-
}
443-
else
444-
{
445-
autogeneratedFieldValue = cmd.ExecuteScalar();
446-
}
447-
Type autogeneratedFieldType = autogeneratedFieldValue.GetType();
448-
Type propertyType = entityMetadata.Properties[autogeneratedFieldName].PropertyInfo.PropertyType.UndelyingType();
449-
if (autogeneratedFieldType == propertyType)
450-
{
451-
setters[autogeneratedFieldName](entity, autogeneratedFieldValue);
452-
}
453-
else
454-
{
455-
setters[autogeneratedFieldName](entity, Convert.ChangeType(autogeneratedFieldValue, propertyType));
441+
if (EntityLiteProvider.AutoGeneratedFieldFetchMode == AutoGeneratedFieldFetchMode.OutputParameter)
442+
{
443+
cmd.ExecuteNonQuery();
444+
var autogeneratedFieldParam = cmd.Parameters.Cast<IDataParameter>().FirstOrDefault(x => x.Direction == ParameterDirection.Output);
445+
if (autogeneratedFieldParam == null)
446+
{
447+
throw new InvalidOperationException(string.Format("There is no output parameter in insert command for autogenerated field {0}.{1},", entityType.Name, autogeneratedFieldName));
448+
}
449+
autogeneratedFieldValue = autogeneratedFieldParam.Value;
450+
}
451+
else
452+
{
453+
autogeneratedFieldValue = cmd.ExecuteScalar();
454+
}
455+
Type autogeneratedFieldType = autogeneratedFieldValue.GetType();
456+
Type propertyType = entityMetadata.Properties[autogeneratedFieldName].PropertyInfo.PropertyType.UndelyingType();
457+
if (autogeneratedFieldType == propertyType)
458+
{
459+
setters[autogeneratedFieldName](entity, autogeneratedFieldValue);
460+
}
461+
else
462+
{
463+
setters[autogeneratedFieldName](entity, Convert.ChangeType(autogeneratedFieldValue, propertyType));
464+
}
465+
return true;
456466
}
457-
return true;
458467
});
459468
}
460469

@@ -502,8 +511,10 @@ protected virtual int Update(object entity, List<string> sortedFields)
502511

503512
var affectedRecords = this.ExecuteCommand(() => this.commandBuilder.GetUpdateCommand(entity, sortedFields), createCmd =>
504513
{
505-
var cmd = createCmd();
506-
return cmd.ExecuteNonQuery();
514+
using (var cmd = createCmd())
515+
{
516+
return cmd.ExecuteNonQuery();
517+
}
507518
});
508519

509520
var identity = entity.TryGetId();
@@ -609,18 +620,29 @@ public T ExecuteCommand<T>(Func<DbCommand> createCommand, Func<Func<DbCommand>,
609620

610621
public IEnumerable<T> ToEnumerable<T>(Func<DbCommand> createCommand)
611622
{
612-
return this.ExecuteCommand(createCommand, ToEnumerableImplementation<T>);
623+
return ToEnumerable<T>(createCommand, null);
624+
}
625+
626+
public IEnumerable<T> ToEnumerable<T>(Func<DbCommand> createCommand, Action<DbCommand> postCommandExecution)
627+
{
628+
return this.ExecuteCommand(createCommand, (x) => ToEnumerableImplementation<T>(x, postCommandExecution));
613629
}
614630

615-
internal static IEnumerable<T> ToEnumerableImplementation<T>(Func<DbCommand> createCommand)
631+
internal static IEnumerable<T> ToEnumerableImplementation<T>(Func<DbCommand> createCommand, Action<DbCommand> postCommandExecution)
616632
{
617633
using (var cmd = createCommand())
618-
using (var reader = cmd.ExecuteReader())
619634
{
620-
var factory = reader.GetFactory(typeof(T));
621-
while (reader.Read())
635+
using (var reader = cmd.ExecuteReader())
636+
{
637+
var factory = reader.GetFactory(typeof(T));
638+
while (reader.Read())
639+
{
640+
yield return (T)factory(reader);
641+
}
642+
}
643+
if (postCommandExecution != null)
622644
{
623-
yield return (T)factory(reader);
645+
postCommandExecution(cmd);
624646
}
625647
}
626648
}

inercya.EntityLite/TemplatedCommand.cs

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,44 @@ private DbCommand CreateCommand()
3434

3535
public int ExecuteNonQuery()
3636
{
37-
return this.DataService.ExecuteCommand(CreateCommand, x => x().ExecuteNonQuery());
37+
return this.DataService.ExecuteCommand(CreateCommand, x =>
38+
{
39+
using (var cmd = x())
40+
{
41+
var returnValue = cmd.ExecuteNonQuery();
42+
SetOutPutParameters(cmd);
43+
return returnValue;
44+
}
45+
});
3846
}
3947

4048
public object ExecuteScalar()
4149
{
42-
return this.DataService.ExecuteCommand(CreateCommand, x => x().ExecuteScalar());
50+
return this.DataService.ExecuteCommand(CreateCommand, x =>
51+
{
52+
using (var cmd = x())
53+
{
54+
var returnValue = cmd.ExecuteScalar();
55+
SetOutPutParameters(cmd);
56+
return returnValue;
57+
}
58+
});
59+
}
60+
61+
private void SetOutPutParameters(DbCommand command)
62+
{
63+
var setters = this.Template.GetType().GetPropertySetters();
64+
foreach (var p in command.Parameters.Cast<DbParameter>().Where(x => (x.Direction & ParameterDirection.Output) == ParameterDirection.Output))
65+
{
66+
if (p.Value == DBNull.Value)
67+
{
68+
setters[p.SourceColumn](this.Template, null);
69+
}
70+
else
71+
{
72+
setters[p.SourceColumn](this.Template, p.Value);
73+
}
74+
}
4375
}
4476

4577
public IDataReader ExecuteReader()
@@ -59,7 +91,7 @@ public IDataReader ExecuteReader(CommandBehavior behavior)
5991

6092
public IEnumerable<T> ToEnumerable<T>() where T: class, new()
6193
{
62-
return DataService.ToEnumerable<T>(CreateCommand);
94+
return DataService.ToEnumerable<T>(CreateCommand, x => SetOutPutParameters(x));
6395
}
6496

6597
public IList<T> ToList<T>() where T : class, new()

inercya.EntityLite/Templates/Extensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ internal static void AddParametersToCommand(this ISqlTemplate template, DbComman
9999
var parameterAttr = (DbParameterAttribute)attrs[0];
100100
IDbDataParameter parameter = command.CreateParameter();
101101
parameter.ParameterName = parameterPrefix + pi.Name;
102+
parameter.SourceColumn = pi.Name;
102103
parameter.DbType = parameterAttr.DbType;
103104
parameter.Direction = parameterAttr.Direction;
104105
if (parameterAttr.Size != 0) parameter.Size = parameterAttr.Size;
128 KB
Binary file not shown.
129 KB
Binary file not shown.
134 KB
Binary file not shown.

nuget/Core/EntityLite.Core.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package >
33
<metadata>
44
<id>EntityLite.Core</id>
5-
<version>1.0.4-Beta</version>
5+
<version>1.0.7-Beta</version>
66
<title>i-nercya EntityLite Core</title>
77
<authors>Jesús López (i-nercya intelligent software)</authors>
88
<owners></owners>

nuget/Core/Publish.cmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
%~dp0..\NuGet.exe Update -self
2-
%~dp0..\NuGet.exe Push EntityLite.Core.1.0.4-Beta.nupkg
2+
%~dp0..\NuGet.exe Push EntityLite.Core.1.0.7-Beta.nupkg
33
pause
Binary file not shown.
16.6 KB
Binary file not shown.
16.6 KB
Binary file not shown.
16.6 KB
Binary file not shown.

nuget/Generators/EntityLite.nuspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<package >
33
<metadata>
44
<id>EntityLite</id>
5-
<version>1.0.4-Beta</version>
5+
<version>1.0.7-Beta</version>
66
<title>i-nercya EntityLite</title>
77
<authors>Jesús López (i-nercya intelligent software)</authors>
88
<owners></owners>
@@ -19,10 +19,10 @@
1919
<iconUrl>https://nuget.org/Content/Images/packageDefaultIcon-50x50.png</iconUrl>
2020
<requireLicenseAcceptance>false</requireLicenseAcceptance>
2121
<licenseUrl>http://opensource.org/licenses/Apache-2.0</licenseUrl>
22-
<copyright>Copyright 2013</copyright>
22+
<copyright>Copyright 2013</copyright>
2323
<dependencies>
2424
<group targetFramework="net35-client">
25-
<dependency id="EntityLite.Core" version="[1.0.3-Beta]" />
25+
<dependency id="EntityLite.Core" version="[1.0.7-Beta]" />
2626
</group>
2727
</dependencies>
2828
<references></references>

nuget/Generators/Publish.cmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
%~dp0..\NuGet.exe Update -self
2-
%~dp0..\NuGet.exe Push EntityLite.1.0.4-Beta.nupkg
2+
%~dp0..\NuGet.exe Push EntityLite.1.0.7-Beta.nupkg
33
pause

nuget/Generators/content/EntityLite.ttinclude/EntityLite.ttinclude

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<#@ assembly name="Microsoft.CSharp" #>
44
<#@ assembly name="System.Data" #>
55
<#@ assembly name="System.Xml" #>
6-
<#@ assembly name="$(SolutionDir)packages\EntityLite.Core.1.0.4-Beta\lib\net35-client\inercya.EntityLite.dll" #>
6+
<#@ assembly name="$(SolutionDir)packages\EntityLite.Core.1.0.7-Beta\lib\net35-client\inercya.EntityLite.dll" #>
77
<#@ import namespace="System" #>
88
<#@ import namespace="System.Reflection" #>
99
<#@ import namespace="System.Data" #>

0 commit comments

Comments
 (0)