我对顶端的多个映射器试图在包含 < code> NULL code> 的列上拆分有问题。 Dapper 似乎不会即时转换对象, 我的映射功能接收到 < code> null code > 而不是对象 。
下面我的新测试:
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. isnotNull ();
, 原因是 cat
传递到映射功能是 null
. 。
我还在Assert类中添加了这个方法:
public static void IsNotNull(this object obj)
{
if (obj == null)
{
throw new ApplicationException("Expected not null");
}
}