Commit 2b04c22f authored by Jakub Konecki's avatar Jakub Konecki

MultiMap doesn't work with NULL values

Replicated a bug 'Dapper MultiMap doesn't work with splitOn with NULL
value' reported on SO http://stackoverflow.com/q/10744728/449906.
Dapper doesn't create an instance of the class if the first property
after split is mapped to a column with NULL value.
parent 09ddf2f7
...@@ -48,5 +48,12 @@ public static void IsNull(this object obj) ...@@ -48,5 +48,12 @@ public static void IsNull(this object obj)
} }
} }
public static void IsNotNull(this object obj)
{
if (obj == null)
{
throw new ApplicationException("Expected not null");
}
}
} }
} }
...@@ -579,6 +579,7 @@ class Category ...@@ -579,6 +579,7 @@ class Category
{ {
public int Id { get; set; } public int Id { get; set; }
public string Name { get; set; } public string Name { get; set; }
public string Description { get; set; }
} }
public void TestMultiMapWithSplit() // http://stackoverflow.com/q/6056778/23354 public void TestMultiMapWithSplit() // http://stackoverflow.com/q/6056778/23354
{ {
...@@ -594,6 +595,22 @@ class Category ...@@ -594,6 +595,22 @@ class Category
product.Category.Id.IsEqualTo(2); product.Category.Id.IsEqualTo(2);
product.Category.Name.IsEqualTo("def"); product.Category.Name.IsEqualTo("def");
} }
public void TestMultiMapWithSplitWithNullValue() // http://stackoverflow.com/q/10744728/449906
{
var sql = @"select 1 as id, 'abc' as name, NULL as description, 'def' as name";
var product = connection.Query<Product, Category, Product>(sql, (prod, cat) =>
{
prod.Category = cat;
return prod;
}, splitOn: "description").First();
// assertions
product.Id.IsEqualTo(1);
product.Name.IsEqualTo("abc");
product.Category.IsNotNull();
product.Category.Id.IsEqualTo(0);
product.Category.Name.IsEqualTo("def");
product.Category.Description.IsNull();
}
public void TestFieldsAndPrivates() public void TestFieldsAndPrivates()
{ {
var data = connection.Query<TestFieldCaseAndPrivatesEntity>( var data = connection.Query<TestFieldCaseAndPrivatesEntity>(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment