Sử dụng NHibernate 3.1 với cả SQL Server và Oracle DBs, chúng tôi cần lưu trữ chuỗi văn bản dài hơn 4000 ký tự. Văn bản thực sự là XML, nhưng điều đó không quan trọng - chúng tôi chỉ muốn coi nó là văn bản thô. Với SQL Server, điều này rất dễ dàng. Chúng tôi khai báo cột này là NVARCHAR (MAX) và ánh xạ nó như sau:Lập bản đồ chuỗi văn bản dài trong Oracle và NHibernate
<property name="MyLongTextValue" length="100000"/>
Việc sử dụng thuộc tính độ dài cho NHibernate mong đợi một chuỗi dài hơn 4000 ký tự.
Đối với cuộc sống của tôi, tôi không thể tìm ra cách để thực hiện công việc này trên Oracle 11g. Tôi đã cố gắng tuyên bố cột là cả XMLTYPE và LONG không thành công. Trong trường hợp đầu tiên, chúng tôi kết thúc với ORA-01461: chỉ có thể ràng buộc giá trị DÀI để chèn vào cột DÀI khi cố chèn hàng. Trong trường hợp thứ hai, dữ liệu được chèn chính xác nhưng trở lại như một chuỗi rỗng khi truy vấn.
Có ai biết cách thực hiện tác phẩm này không? Câu trả lời phải tương thích với cả SQL Server và Oracle. Tôi không muốn viết các phần mở rộng tùy chỉnh như các kiểu người dùng và các lớp con của trình điều khiển. Cảm ơn.
Bạn nên sử dụng NTEXT cho máy chủ sql, NVARCHAR (MAX) sẽ không có khả năng xử lý nhiều hơn 4000 ký tự. –
@YavorShahpasov tại sao bạn nghĩ rằng NVARCHAR (MAX) sẽ không xử lý hơn 4000 ký tự? Các tài liệu nói "tối đa cho biết kích thước lưu trữ tối đa là 2^31-1 byte (2 GB)". Đó là đủ cho 1073741823 ký tự hoặc hơn. – phoog
Tôi đã bị lừa bởi thực tế là nó cho phép 1-4000 ký tự. Bạn là chính xác và tối đa sẽ cho phép tối đa 2GB. –