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

Xử lý MySQL Zero Date với EF Core

Mọi người có thể tranh luận rằng điều này phù hợp hơn với tư cách là một bình luận, nhưng về cơ bản, điều đó sẽ lâu dài.

Và:

Bạn sẽ phải giúp tôi một chút vì tôi không có hệ thống làm việc trong tay, vì vậy tôi đang làm việc này từ đỉnh cao của mình. (và tôi đang hơi vội vàng)

Đầu tiên, hãy bắt đầu với một thuộc tính không được ánh xạ:

[NotMapped]
public DateTime ExpiryDate { get; set; }

Thuộc tính này không được ánh xạ. Nó có thể dẫn đến một số lỗi liên quan đến cơ sở dữ liệu không khớp với mô hình, nhưng chúng tôi có thể khắc phục điều đó. Thuộc tính này sẽ không được tự động điền khi truy vấn dữ liệu. Vì vậy, chúng ta cần một cách để tự mình giải quyết vấn đề này.

Ví dụ:( đó là một ví dụ xấu vì chúng tôi cần ngữ cảnh trong thực thể ở đâu đó ):

[NotMapped]
public DateTime? ExpiryDate 
{
    get
    {
         //of course you'll need some caching here
         var s = context.Database.SqlQuery<string>("query to select datetime as string");
         //additional logic to determine validity:
         if (s == "0000-00-00")
             return null;
         //else:
         //do the conversion
    }
 }

Câu hỏi cơ bản ở đây; bạn muốn đi bao xa để hỗ trợ điều này trong khuôn khổ EF? Bạn chỉ cần đọc hay viết bằng cách sử dụng trình theo dõi thay đổi của EF, v.v.?

Có những chức vụ khác, chẳng hạn, để thực hiện một CAST nvarchar trong chính SQL để lấy dữ liệu và xử lý thêm.

Có thể là ModelBuilder tiết lộ một số tùy chọn bổ sung.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL - Không thể tạo khóa ngoài

  2. Xóa bảng với mysqli_multi_query ()

  3. PDO ::PARAM cho kiểu thập phân?

  4. PHP tạo chèn PDO động

  5. Tạo thẻ html tùy chỉnh cho CMS?