Skip to content
This repository has been archived by the owner on Dec 24, 2022. It is now read-only.

Modified QuerySingle to exclude nulls on it's filter set. #45

Merged
merged 1 commit into from May 2, 2012
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/ServiceStack.OrmLite/OrmLiteReadExtensions.cs
Expand Up @@ -288,7 +288,7 @@ public static T QuerySingle<T>(this IDbCommand dbCmd, object anonType)
{
if (typeof(T).IsValueType) return QueryScalar<T>(dbCmd, anonType);

dbCmd.SetFilters<T>(anonType);
dbCmd.SetFilters<T>(anonType, true);

using (var dbReader = dbCmd.ExecuteReader())
return dbReader.ConvertTo<T>();
Expand Down
28 changes: 28 additions & 0 deletions tests/ServiceStack.OrmLite.Tests/OrmLiteQueryTests.cs
Expand Up @@ -115,5 +115,33 @@ public void Can_loop_each_with_filter_from_ModelWithOnlyStringFields_table()
}
}

[Test]
public void Can_GetSingle_with_filter_from_ModelWithOnlyStringFields_table()
{
using (var db = ConnectionString.OpenDbConnection())
using (var dbCmd = db.CreateCommand())
{
dbCmd.CreateTable<ModelWithOnlyStringFields>(true);

var rowIds = new List<string>(new[] { "id-1", "id-2", "id-3" });

rowIds.ForEach(x => dbCmd.Insert(ModelWithOnlyStringFields.Create(x)));

var filterRow = ModelWithOnlyStringFields.Create("id-4");
filterRow.AlbumName = "FilteredName";

dbCmd.Insert(filterRow);

var row = dbCmd.QuerySingle<ModelWithOnlyStringFields>(new { filterRow.AlbumName });
Assert.That(row.Id, Is.EqualTo(filterRow.Id));

row = dbCmd.QuerySingle<ModelWithOnlyStringFields>(new { filterRow.AlbumName, Id = (object)null });
Assert.That(row.AlbumName, Is.EqualTo(filterRow.AlbumName));

row = dbCmd.QuerySingle<ModelWithOnlyStringFields>(new { AlbumName = "Junk", Id = (object)null });
Assert.That(row, Is.Null);
}
}

}
}