sql >> Databáze >  >> RDS >> PostgreSQL

Parametry a hodnoty Null Npgsql 4.0

Nové rozhraní API s obecnými parametry má skutečně problém – mělo by přijímat běžné .NET null (a nikoli DBNull.Value ), otevřel jsem tento problém Chcete-li to sledovat, bude to opraveno ve verzi 4.0.3.

Všimněte si, že jako poznámka k dokumentaci říká, že smyslem generického API je vyhnout se použití Value vlastnost, která je typu object . Pokud použijete obecný NpgsqlParameter<int> ale přiřaďte Value , bude vaše int zaškatulkováno, čímž se ztratí účel API. Měli byste přiřazovat TypedValue , který je typu int a nebude boxovat. To je také důvod, proč nemůžete přiřadit DBNull.Value k označení hodnoty null (je to jiný typ .NET).

Několik poznámek o tom, zda by se mělo používat toto nové generické API:

  • Pokud píšete mnoho typů hodnot (např. int , DateTime ...) tím se odstraní všechny boxerské alokace. Zda to bude významné, závisí na vaší aplikaci – pečlivě profilujte.
  • Obecná rozhraní API by obecně měla být vždy upřednostňována před negenerickými, pokud je typ znám v době kompilace. To umožňuje kompilátoru včasně zkontrolovat správnost typu a činí váš kód přehlednějším – používáme List<string> spíše než ArrayList jako věc dobrého kódování, i když výkon není problém
  • Hlavní (jedinou?) nevýhodou generického API je to, že je specifické pro Npgsql, takže váš kód nelze přenést na jiné databázové ovladače (ačkoli existuje problém za vytvoření této (nebo něčeho podobného) součástí ADO.NET).


  1. Proč není současná připojitelnost Oracle ODAC viditelná ve VS 2013?

  2. Jak mapovat časové razítko postgresql s časovým pásmem v entitě JPA 2

  3. Jak uložit a načíst obrázek PictureBox do Sql Server Database Varbinary (Max) Column VB.NET

  4. codeigniter aktivní záznamy spojit s pomocí?