Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Penyedia Oracle Entity Framework tidak menyimpan DateTime.Now dengan milidetik

Ah! Rekan saya yang hebat punya ide dan berhasil!

Dalam kode EF kami, kami mencoba memasukkan

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<EntityClass>().Property(p => p.TIMESTAMP).HasPrecision(6);
}

Dan kemudian DateTime.Now dengan milidetik disimpan ke dalam database

Pembaruan - perlu disebutkan bagaimana saya mengalami kesulitan ini

Membangun Database dengan Model First dalam aplikasi "test"

  1. Aplikasi saya harus bekerja dengan SQL Server dan Oracle. Jadi...
  2. Saya mulai dengan mendesain database saya dalam Diagram EDMX
  3. Setelah diagram selesai, saya membuat DDL untuk SQL Server.
  4. Untuk beberapa alasan penyedia Oracle EF tidak dapat menghasilkan DDL jadi saya melanjutkan untuk membuat perubahan secara manual ke SQL Server DDL sehingga akan benar secara sintaksis

    Masalah Pertama - Oracle DDL saya menggunakan Date, bukan Timestamp. Pastikan Anda menggunakan Timestamp!!! DateTime di Oracle tidak menyimpan milidetik.

Menggunakan Kode Pertama dari Database untuk solusi aktual

  1. Saya ingin aplikasi menggunakan pendekatan Code First (Hanya preferensi saya. Menurut saya lebih mudah untuk mempertahankannya)
  2. Jadi saya terhubung ke database SQL Server dan membuat semua kelas saya dari skema itu.
  3. Semua unit test saya lulus dan kemudian memutuskan untuk mengujinya dengan database Oracle
  4. Bahkan setelah mengubah dari DATE ke Timestamp, saya masih mengalami masalah dengan milidetik yang masuk.
  5. Saya membuat model Code First lain dalam solusi studio visual pengujian dengan TIMESTAMP(6) ketik Oracle, kecuali ketika saya melihat OnModelCreating kode, itu tidak menghasilkan apa pun dengan HasPrecision(6) juga tidak ada dekorator di properti di kelas C# POCO yang dihasilkan.
  6. Saya perhatikan jika Anda memiliki HasPrecision(6) kode di OnModelCreating . Anda , Kode PertamaCreateDatabase() benar-benar akan membuat Oracle TIMESTAMP(6) . Jika tidak, maka penyedia Oracle EF akan menggunakan DATE

Saya pikir jika Anda melakukan pendekatan Model First, Anda dapat menetapkan nilai presisi dalam diagram EDMX, tetapi saya pernah mendengar bahwa itu praktik yang buruk.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa mendapatkan jumlah catatan yang terpengaruh oleh prosedur tersimpan?

  2. Oracle Concurrent Manager – CP Analyzer untuk E-Business Suite

  3. Oracle:Tampilkan nomor baris dengan klausa 'order by'

  4. Apakah ada jenis cap waktu modifikasi otomatis untuk kolom Oracle?

  5. Entity Framework Core - Take(1), Single(), First()... Tidak Bekerja dengan Penyedia Oracle (ORA-00933:Perintah SQL tidak diakhiri dengan benar)