sql >> Databáze >  >> RDS >> Oracle

Poskytovatel Oracle Entity Framework neukládá DateTime.Now s milisekundami

Aha! Můj úžasný kolega měl nápad a fungovalo to!

V našem EF kódu jsme zkusili vložit

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

A pak DateTime.Now s milisekundami se uloží do databáze

Aktualizace – stojí za zmínku, jak jsem se do této nesnáze dostal

Budování databáze s Model First v "testovací" aplikaci

  1. Moje aplikace musí fungovat se serverem SQL Server i Oracle. Takže...
  2. Začal jsem návrhem databáze v EDMX diagramu
  3. Jakmile byl diagram hotový, vygeneroval jsem DDL pro SQL Server.
  4. Z nějakého důvodu poskytovatel Oracle EF nemohl vygenerovat DDL, takže jsem přistoupil k ručnímu provedení změn v SQL Server DDL, aby to bylo syntakticky správné

    1. problém - můj Oracle DDL používal datum místo časového razítka. Ujistěte se, že používáte Timestamp!!! DateTime v Oracle neukládá milisekundy.

Použití Code First z databáze pro skutečné řešení

  1. Chtěl jsem, aby aplikace používala přístup Code First (pouze moje preference. Myslím, že je to jednodušší na údržbu)
  2. Připojil jsem se tedy k databázi SQL Server a vygeneroval všechny své třídy z tohoto schématu.
  3. Prošel jsem všemi testy jednotek a rozhodl jsem se to otestovat s databází Oracle
  4. I po změně z DATE na Timestamp jsem měl stále problémy s přibývajícími milisekundami.
  5. Vygeneroval jsem další model Code First v testovacím řešení vizuálního studia s TIMESTAMP(6) zadejte v Oracle, kromě případů, kdy jsem se podíval na OnModelCreating kód, nevygenerovalo nic pomocí HasPrecision(6) ani ve vygenerované třídě C# POCO nebyli na pozemku žádní dekoratéři.
  6. Všiml jsem si, že máte HasPrecision(6) kód ve vašem OnModelCreating , Code FirstCreateDatabase() ve skutečnosti vytvoří Oracle TIMESTAMP(6) . Pokud tak neučiníte, poskytovatel Oracle EF použije DATE

Myslím, že pokud použijete přístup Model First, můžete nastavit hodnoty přesnosti v EDMX diagramu, ale slyšel jsem, že je to špatný postup.



  1. Nahrání fotografií CodeIgniter

  2. Jak vezmu poddotaz DISTINCT ON, který je řazen podle samostatného sloupce, a zrychlím jej?

  3. Potřebuji seznam zemí v T-SQL

  4. Zabránit dvěma uživatelům upravovat stejná data