API thông số chung mới thực sự có vấn đề - nó phải chấp nhận .NET null
thông thường (chứ không phải DBNull.Value
), Tôi đã mở sự cố này
để theo dõi điều này, nó sẽ được sửa trong 4.0.3.
Lưu ý rằng như ghi chú tài liệu
cho biết, toàn bộ điểm của API chung là tránh sử dụng Value
thuộc tính thuộc loại object
. Nếu bạn sử dụng NpgsqlParameter<int>
chung chung nhưng chỉ định Value
, int của bạn sẽ được đóng hộp, đánh bại mục đích của API. Bạn nên gán cho TypedValue
, thuộc loại int
và sẽ không đóng hộp. Đây cũng là lý do tại sao bạn không thể gán DBNull.Value
để chỉ ra một giá trị null (đó là một loại .NET khác).
Một số lưu ý về việc có nên sử dụng API chung mới này hay không:
- Nếu bạn đang viết nhiều kiểu giá trị (ví dụ:
int
,DateTime
...) điều này sẽ xóa tất cả các phân bổ quyền anh. Điều này có quan trọng hay không phụ thuộc vào đơn đăng ký của bạn - hãy cẩn thận hồ sơ. - Các API chung chung luôn được ưu tiên hơn các API không chung chung khi loại được biết đến tại thời điểm biên dịch. Điều này cho phép trình biên dịch sớm kiểm tra tính đúng đắn của loại và làm cho mã của bạn rõ ràng hơn - chúng tôi sử dụng
List<string>
chứ không phải làArrayList
vấn đề mã hóa tốt ngay cả khi hiệu suất không phải là vấn đề - Hạn chế chính (duy nhất?) của API chung là nó dành riêng cho Npgsql, làm cho mã của bạn không di động đối với các trình điều khiển cơ sở dữ liệu khác (mặc dù một vấn đề tồn tại để làm cho cái này (hoặc cái gì đó tương tự) trở thành một phần của ADO.NET).