我在試圖在包含NULL
的列上拆分的Dapper中有MultiMaps問題。 Dapper似乎不會實例化對象,而我的映射函數接收null
而不是對象。Dapper MultiMap不能與splitOn一起使用NULL值
這是我的新的測試:
class Product
{
public int Id { get; set; }
public string Name { get; set; }
public Category Category { get; set; }
}
class Category
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public void TestMultiMapWithSplitWithNullValue()
{
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();
}
失敗是product.Category.IsNotNull();
由於事實cat
傳遞給映射功能是null
線。
我還添加了這個方法來斷言類:
public static void IsNotNull(this object obj)
{
if (obj == null)
{
throw new ApplicationException("Expected not null");
}
}
我很樂意幫忙,在Twitter上寫下github for windows。我知道他們正在努力工作,以解決這個問題的結局問題 –
@SamSaffron - 感謝您的評論。如果您在完成整理之後讓我知道,我可以推動我的更改。你可以從我的帖子中複製測試,但是很明顯,這些更改應該放在哪裏;-) PS。我喜歡github的窗戶。讓我知道我是否可以幫助進行測試。 –
我已經發送了適合Dapper的PR,應該讓這些行結束問題消失。讓我知道他們是否仍然出現。故事的道德:*複製粘貼[這個文件](https://gist.github.com/2802523#file_the+original+guy+used+autocrlffalse)作爲'.gitattributes',如果原始人使用'autocrlf = false '*複製粘貼[此文件](https://gist.github.com/2802523#file_the+original+guy+used+autocrlftrue)作爲'.gitattributes',如果他使用'autocrlf = true' –