Tôi gặp sự cố với MultiMaps trong công cụ tìm bản đồ đang cố gắng tách trên cột chứa NULL
. Dapper dường như không khởi tạo đối tượng và hàm ánh xạ của tôi nhận được null
thay vì đối tượng.Dapper MultiMap không hoạt động với splitOn với giá trị NULL
Dưới đây là thử nghiệm mới của tôi:
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();
}
Điểm mấu rằng thất bại là product.Category.IsNotNull();
do thực tế rằng cat
truyền cho chức năng lập bản đồ là null
.
Tôi cũng đã thêm phương pháp này để Khẳng định đẳng cấp:
public static void IsNotNull(this object obj)
{
if (obj == null)
{
throw new ApplicationException("Expected not null");
}
}
Tôi rất muốn giúp đỡ, ping Paul trên twitter người viết github cho các cửa sổ. Tôi biết họ đang làm việc chăm chỉ để có được dòng này kết thúc vấn đề có thể xử lý –
@SamSaffron - cảm ơn cho bình luận của bạn. Nếu bạn cho tôi biết khi nó được sắp xếp, tôi có thể đẩy các thay đổi của tôi. Bạn có thể sao chép các bài kiểm tra từ bài viết của tôi, mặc dù - nó khá rõ ràng, nơi những thay đổi nên đi ;-) PS. Tôi yêu github cho cửa sổ. Hãy cho tôi biết nếu tôi có thể được giúp đỡ bất kỳ với thử nghiệm. –
Tôi đã gửi một PR cho Dapper mà nên làm cho những vấn đề kết thúc dòng biến mất.Hãy cho tôi biết nếu họ vẫn hiển thị. Đạo đức của câu chuyện: * Sao chép-dán [tệp này] (https://gist.github.com/2802523#file_the+original+guy+used+autocrlffalse) dưới dạng '.gitattributes' nếu người gốc sử dụng' autocrlf = false '* Sao chép-dán [tệp này] (https://gist.github.com/2802523#file_the+original+guy+used+autocrlftrue) dưới dạng' .gitattributes' nếu anh ta sử dụng 'autocrlf = true' –