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

EF6 Oracle TimeStamp &Date

Tôi đã gặp sự cố tương tự với loại DATE Oracle và EF6.1. Cách giải quyết của tôi là sử dụng CodeFirstFunctions thư viện (chỉ có sẵn cho EF6.1 trở lên) và chỉ định một hàm chuyển đổi trước trong Oracle:

create or replace FUNCTION TO_DATE_LOCAL 
(
  DATETIMETOCONVERT IN VARCHAR2 
, CONVERTFORMAT IN VARCHAR2 
) RETURN DATE AS 
BEGIN
  RETURN to_date(DATETIMETOCONVERT, CONVERTFORMAT);
END TO_DATE_LOCAL;

Và sau đó trong DbContext của tôi:

[DbFunction("CodeFirstDatabaseSchema", "TO_DATE_LOCAL")]
public static DateTime ToDateLocal(string dateTimeToConvert, string convertFormat)
{
    // no need to provide an implementation
    throw new NotSupportedException();
}

Vì vậy, tôi có thể buộc Entity Framework sử dụng loại DATE trong điều kiện where:

var measurement = 
  context.Measurements
    .Where(m => m.MeasuredAt == 
          PlantContext.ToDateLocal("2016.01.01 10:00:00", "YYYY.MM.DD Hh24:MI:SS"))
    .FirstOrDefault();

Hãy cẩn thận sử dụng các chữ cái viết hoa cho tên hàm và cho tên lược đồ với CodeFirstFunctions nếu bạn sử dụng Oracle.

Nếu bạn cần thêm chi tiết, tôi đã viết bài đăng trên blog về điều này với một dự án mẫu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khóa Liquibase - lý do?

  2. ORA-22288:tệp hoặc thao tác LOB FILEOPEN không thành công. Tên tệp, tên thư mục không chính xác

  3. Tìm nạp dữ liệu cho ngày 31 tháng 12 của 5 năm trước và ngày hôm nay

  4. Trợ giúp Truy vấn - Chuỗi trong đó mệnh đề có &ký tự

  5. Oracle Streams Step by Step Replication Ví dụ