Tôi đang sử dụng EF 4 (cơ sở dữ liệu đầu tiên, mô hình được tạo đầy đủ từ nó) với cơ sở dữ liệu oracle 10g và tôi gặp sự cố với một trường.Chuyển đổi Int32 thành số Oracle (5) bằng EF4
Trường của tôi được xác định là NUMBER(5)
trong cơ sở dữ liệu của tôi. Trong mô hình của tôi, EF đã định nghĩa nó là short
. Vấn đề của tôi là tôi có một số giá trị lớn hơn 32,767 (tối đa là ngắn) Tôi tìm thấy bài đăng này: Entity Framework generates short instead of int. Tôi làm theo hướng dẫn và nó hoạt động, mô hình của tôi có giá trị Int32 bây giờ.
Nhưng tôi có một vấn đề mới:
Error 2019: Member Mapping specified is not valid. The type 'Edm.Int32[Nullable=True,DefaultValue=]' of member 'XX' in type 'Model.XXX' is not compatible with 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=5,Scale=0]' of member 'XX' in type 'Model.Store.XXX'.
Lỗi này luôn hiển thị trong danh sách Lỗi tab của Visual Studio. Tuy nhiên, việc xây dựng thành công, và nó nửa hoạt động:
- đọc một giá trị trong cơ sở dữ liệu làm việc
- viết một giá trị không làm việc: 99999 đã được chuyển đổi trong -31.073 (xem chỉnh sửa)
Is có một giải pháp để có nó hoạt động trên cả hai cách?
BTW, có cách nào để yêu cầu pháp nhân sử dụng int32 cho các trường INTEGER oracle không? Nó sử dụng số thập phân theo mặc định.
EDIT
Trong khi debuging từng bước, tôi thấy lý do tại sao giá trị của tôi là -31.073. Tôi đã quên dòng này:
dao.Value = (short)dto.Value;
Hai giá trị của tôi là int, nhưng chuyển đổi ngầm ngắn gọn là nguồn gốc.
Nó sử dụng 'thập phân' cho' Số' vì Số có thể là _12.433242_ số nguyên có thể giữ giá trị đó. Dù sao về câu hỏi của bạn, bạn có thử liên hệ với Oracle để có câu trả lời chính thức không? – gdoron
Bạn có sử dụng Oracle Data Provider cho Oracle 11g không? Tôi sử dụng EF 4 với ODP cho Oracle 11g và tôi không có vấn đề gì với oracle INTEGER. –