Skip to content

Commit bbcf28b

Browse files
committed
Fix bugs with odd types and ToScalarOrDefault
1 parent 5b46c93 commit bbcf28b

File tree

12 files changed

+46
-11
lines changed

12 files changed

+46
-11
lines changed

NugetPackAll.cmd

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
cd Simple.Data
2+
call NugetPack.cmd
3+
cd ..\Simple.Data.Ado
4+
call NugetPack.cmd
5+
cd ..\Simple.Data.Mocking
6+
call NugetPack.cmd
7+
cd ..\Simple.Data.SqlCe40
8+
call NugetPack.cmd
9+
cd ..\Simple.Data.SqlServer
10+
call NugetPack.cmd
11+
cd ..

Simple.Data.Ado/CommandBuilder.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -185,13 +185,8 @@ private static IDbDataParameter CreateSingleParameter(object value, IDbCommand c
185185
var parameter = command.CreateParameter();
186186
parameter.ParameterName = name;
187187
parameter.DbType = dbType;
188-
parameter.Value = GetTheDataParameterValue(value);
188+
parameter.Value = CommandHelper.FixObjectType(value);
189189
return parameter;
190190
}
191-
192-
private static object GetTheDataParameterValue(object value)
193-
{
194-
return value ?? DBNull.Value;
195-
}
196191
}
197192
}

Simple.Data.Ado/CommandHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ private static void PrepareCommand(CommandBuilder commandBuilder, IDbCommand com
7171
}
7272
}
7373

74-
private static object FixObjectType(object value)
74+
public static object FixObjectType(object value)
7575
{
7676
if (value == null) return DBNull.Value;
7777
if (TypeHelper.IsKnownType(value.GetType())) return value;

Simple.Data.Ado/NugetPack.cmd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
..\nuget\nuget pack -sym Simple.Data.Ado.csproj

Simple.Data.Mocking/NugetPack.cmd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
..\nuget\nuget pack -sym Simple.Data.Mocking.csproj

Simple.Data.SqlCe40/NugetPack.cmd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
..\nuget\nuget pack -sym Simple.Data.SqlCe40.csproj
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
..\nuget\nuget pack -sym Simple.Data.SqlServer.csproj

Simple.Data.SqlTest/ConversionTests.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,16 @@ public void WeirdTypeGetsConvertedToInt()
2525
Assert.AreEqual(1, user.Id);
2626
}
2727

28+
[Test]
29+
public void WeirdTypeUsedInQueryGetsConvertedToInt()
30+
{
31+
var weirdValue = new WeirdType(1);
32+
var db = DatabaseHelper.Open();
33+
var user = db.Users.QueryById(weirdValue).FirstOrDefault();
34+
Assert.IsNotNull(user);
35+
Assert.AreEqual(1, user.Id);
36+
}
37+
2838
[Test]
2939
public void InsertingWeirdTypesFromExpando()
3040
{

Simple.Data.SqlTest/QueryTest.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,5 +126,19 @@ public void ShouldDirectlyQueryDetailTable()
126126
Assert.IsNotNull(order);
127127
Assert.AreEqual(1, order.OrderId);
128128
}
129+
130+
[Test]
131+
public void ShouldReturnNullWhenNoRowFound()
132+
{
133+
var db = DatabaseHelper.Open();
134+
string name = db.Customers
135+
.Query()
136+
.Select(db.Customers.Name)
137+
.Where(db.Customers.CustomerId == 0) // There is no CustomerId 0
138+
.OrderByName()
139+
.Take(1) // Should return only one record no matter what
140+
.ToScalarOrDefault<string>();
141+
Assert.IsNull(name);
142+
}
129143
}
130144
}

Simple.Data.sln.docstates

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)