2012-01-12 28 views
5

Tôi đang cố gắng để viết DatabaseStorageBase của riêng mình cho mini-profiler, và tôi chạy vào các vấn đề trong phương phápchuyển đổi Dapper của tinyint

private List<T> LoadFor<T>(DbConnection conn, object idParameter) 

tôi. Dapper tiếp tục la hét tôi với

Error parsing column 5 (level=0 - SByte) 

Tôi đang lưu trữ mức như tinyint(4), vì vậy tôi giả đoan trang không thể làm cho việc chuyển đổi từ Tiny Int với những gì trông giống như một Enum (ProfileLevel)? Ai đó có thể đề nghị làm thế nào tôi nên lưu trữ mức độ trong mysql vì vậy tôi có thể giải quyết tai ương chuyển đổi của tôi?

+0

bạn không cần phải thừa kế cơ sở, bạn có thể đơn giản triển khai giao diện lưu trữ –

+0

Tôi đã cố gắng triển khai giao diện lưu trữ, nhưng phương thức Save vẫn muốn tôi lưu mức đó. Có cách nào để có được dapper để sản xuất enum từ một giá trị số nguyên? Nếu không, có vẻ như tôi sẽ phải lập bản đồ nó bằng tay. – JesseBuesking

+0

@SamSaffron Tôi quên gắn thẻ bạn trong nhận xét của tôi ... xấu của tôi. – JesseBuesking

Trả lời

2

Wow. Thật đáng tiếc, tôi cũng thực hiện mysqlstorage của riêng tôi cho miniprofiler và nhận được lỗi tương tự với bạn.

miniprofiler sử dụng enum làm byte cho MiniProfiler.Level và SqlTiming.ExecuteType sử dụng kiểu dữ liệu nhỏ xíu cho thuộc tính này trả về giá trị không hợp lệ cho thấy nó trả về Sbyte thay vì byte. này hành vi mặc định hành vi của mysql vì nó cho phép trả lại giá trị chữ ký của tinyint nơi như SQLServer không đề cập đến ở đây:

http://forums.mysql.com/read.php?38,5524,5581#msg-5581

http://social.msdn.microsoft.com/Forums/br/adonetefx/thread/8b0949ba-03e8-4637-baa1-d2b4ff0771f0

Do đó, độ phân giải được đơn giản bằng cách thay đổi lĩnh vực tinyint cấp và executeType vào tinyint chưa ký sẽ trả về giá trị đúng (được đúc thành byte). bây giờ mysqlstorage của tôi hoạt động như mong đợi .. hy vọng có thể yêu cầu pull request to sam :)

+0

Tôi sẽ dùng thử cuối tuần và đăng lại với những gì xảy ra, nhưng có vẻ như nó có thể là giải pháp cho vấn đề của tôi: D – JesseBuesking