sql >> データベース >  >> RDS >> Oracle

EF6 Oracle TimeStamp&Date

    DATE OracleタイプとEF6.1で同様の問題が発生しました。回避策は、 CodeFirstFunctions ライブラリ(EF6.1以降でのみ使用可能)および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;
    

    そして後で私のDbContextで:

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

    したがって、Entity Frameworkにwhere条件でDATE型を使用するように強制できます:

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

    Oracleを使用する場合は、関数名およびCodeFirstFunctionsのスキーマ名に大文字を使用するように注意してください。

    詳細が必要な場合は、ブログ投稿 これについては、サンプルプロジェクトを使用してください。




    1. IN句で指定されたすべての値に一致する行のみを選択する

    2. 自動インクリメントの主キーを使用して、RからPostgreSQLテーブルにデータを書き込むにはどうすればよいですか?

    3. データベースを削除する方法

    4. mysqlダンプ-一部のテーブルデータを除外します