Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để sử dụng kiểu int / long không dấu với Entity Framework?

Cập nhật tháng 2 năm 2021

Rõ ràng EF Core hiện hỗ trợ ulong - xem câu trả lời của @ JimbobTheSailor bên dưới.

Phiên bản Khung đối tượng cũ hơn:

Hóa ra rằng Entity Framework không hỗ trợ unsigned Loại dữ liệu. Đối với uint , người ta chỉ có thể lưu trữ giá trị trong kiểu dữ liệu đã ký với phạm vi lớn hơn (nghĩa là long ). Còn về ulong cột? Giải pháp chung không thể hoạt động đối với tôi vì không có loại dữ liệu đã ký nào được EF hỗ trợ có thể chứa ulong mà không bị tràn.

Sau một hồi suy nghĩ, tôi đã tìm ra một giải pháp đơn giản cho vấn đề này:chỉ cần lưu trữ dữ liệu trong long được hỗ trợ nhập và truyền nó tới ulong khi được truy cập. Bạn có thể đang nghĩ:"Nhưng khoan đã, giá trị tối đa của ulong> giá trị tối đa của long!" Bạn vẫn có thể lưu trữ các byte của một ô dài và sau đó chuyển nó trở lại thành ô dài khi bạn cần, vì cả hai đều có 8 byte. Điều này sẽ cho phép bạn lưu một biến dài vào cơ sở dữ liệu thông qua EF.

// Avoid modifying the following directly.
// Used as a database column only.
public long __MyVariable { get; set; }

// Access/modify this variable instead.
// Tell EF not to map this field to a Db table
[NotMapped]
public ulong MyVariable
{
    get
    {
        unchecked
        {
            return (ulong)__MyVariable;
        }
    }

    set
    {
        unchecked
        {
            __MyVariable = (long)value;
        }
    }
}

Quá trình truyền unchecked để ngăn chặn các ngoại lệ tràn.

Hy vọng điều này sẽ giúp ai đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi MySQL::'Quyền truy cập bị từ chối đối với người dùng' root '@' localhost '

  2. Cách chuyển tất cả cơ sở dữ liệu MySQL từ máy chủ cũ sang máy chủ mới

  3. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Fedora 12

  4. 10 mẹo hữu ích về điều chỉnh hiệu suất MySQL

  5. Cách tính Tổng tích lũy trong MySQL