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"
- Aplikasi saya harus bekerja dengan SQL Server dan Oracle. Jadi...
- Saya mulai dengan mendesain database saya dalam Diagram EDMX
- Setelah diagram selesai, saya membuat DDL untuk SQL Server.
-
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
- Saya ingin aplikasi menggunakan pendekatan Code First (Hanya preferensi saya. Menurut saya lebih mudah untuk mempertahankannya)
- Jadi saya terhubung ke database SQL Server dan membuat semua kelas saya dari skema itu.
- Semua unit test saya lulus dan kemudian memutuskan untuk mengujinya dengan database Oracle
- Bahkan setelah mengubah dari DATE ke Timestamp, saya masih mengalami masalah dengan milidetik yang masuk.
- Saya membuat model Code First lain dalam solusi studio visual pengujian dengan
TIMESTAMP(6)
ketik Oracle, kecuali ketika saya melihatOnModelCreating
kode, itu tidak menghasilkan apa pun denganHasPrecision(6)
juga tidak ada dekorator di properti di kelas C# POCO yang dihasilkan. - Saya perhatikan jika Anda memiliki
HasPrecision(6)
kode diOnModelCreating
. Anda , Kode PertamaCreateDatabase()
benar-benar akan membuat OracleTIMESTAMP(6)
. Jika tidak, maka penyedia Oracle EF akan menggunakanDATE
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.