2011-07-29 28 views
6

Chúng tôi đang sử dụng Dapper để ánh xạ dữ liệu sql của chúng tôi và cho đến nay nó đã hoạt động rất tốt. Tôi có một trường hợp mặc dù chúng tôi đang làm một cái gì đó tương tự như:Xử lý đơn giản trả về tập hợp kết quả rỗng

someObject = con.Query<T>("GetInfoSproc", p, commandType: CommandType.StoredProcedure).Single(); 

Điều này làm việc tuyệt vời miễn là thủ tục được lưu trữ Tôi đang gọi trả về dữ liệu. Có những lúc mà thủ tục được lưu trữ có thể không trả lại kết quả và trả về lỗi trong tham số ngoài. Điều này dường như gây ra một vấn đề trong Dapper vì hoạt bát ném lỗi:

"Khi sử dụng các API đa bản đồ đảm bảo bạn thiết lập các param splitOn nếu bạn có các phím khác hơn Id"

Có cách để viết truy vấn để nó có thể xử lý đúng trường hợp khi một kết quả rỗng được trả lại hoặc đây có phải là giới hạn của Dapper không?

+1

tôi đã mở một vấn đề trên google mã trên này để biết thêm thảo luận: http://code.google.com/p/dapper-dot-net/issues/detail?id=57 – TodK

+0

Đối với những người có thể gặp phải câu hỏi này, tôi đã tìm thấy [câu trả lời này] (http: // stackoverflow. com/questions/11720611/how-to-return-null-from-a-dapp er-query-rather-than-defaultt) hữu ích. –

Trả lời

1

SingleOrDefault() là bạn của bạn ở đây

Hãy thử điều này:

someObject = con.Query<T>("GetInfoSproc", p, commandType: CommandType.StoredProcedure).SingleOrDefault(); 
if (someObject != null) 
{ 
    // operate on your results here 
} 
return someObject; 

bạn cũng sẽ cần phải chắc chắn TNullable

+0

Nếu có khả năng SPROC của bạn có thể trả về danh sách , thì SingleOrDefault sẽ ném một ngoại lệ. Trong trường hợp đó tốt nhất để sử dụng FirstOrDefault. Xem tài liệu Dapper: http://dapper-tutorial.net/querysingleordefault – maurocam

Các vấn đề liên quan