sql >> Database >  >> RDS >> PostgreSQL

Npgsql 4.0-parameters en nulwaarden

De nieuwe generieke parameter-API heeft inderdaad een probleem - het zou normale .NET null moeten accepteren (en niet DBNull.Value ), heb ik dit probleem geopend om dit bij te houden, wordt het opgelost in 4.0.3.

Merk op dat als de documentatienota zegt, het hele punt van de generieke API is om het gebruik van de Value . te vermijden eigenschap, van het type object . Als u de generieke NpgsqlParameter<int> . gebruikt maar wijs Value toe , uw int wordt in een doos geplaatst en verslaat het doel van de API. U zou moeten toewijzen aan TypedValue , van het type int en zal niet boksen. Dit is ook de reden waarom u DBNull.Value . niet kunt toewijzen om een ​​null-waarde aan te geven (het is een ander .NET-type).

Enkele opmerkingen over het al dan niet gebruiken van deze nieuwe generieke API:

  • Als u veel waardetypen schrijft (bijv. int , DateTime ...) hierdoor worden alle bokstoewijzingen verwijderd. Of dit significant zal zijn, hangt af van uw toepassing - profiel zorgvuldig.
  • Generieke API's in het algemeen moeten altijd de voorkeur hebben boven niet-generieke, wanneer het type bekend is tijdens het compileren. Dit stelt de compiler in staat om de typecorrectheid vroeg te controleren en uw code duidelijker te maken - we gebruiken List<string> in plaats van ArrayList als een kwestie van goede codering, zelfs als prestaties geen probleem zijn
  • Het belangrijkste (enige?) nadeel van de generieke API is dat deze Npgsql-specifiek is, waardoor uw code niet overdraagbaar is naar andere databasestuurprogramma's (hoewel er is een probleem voor het maken van dit (of iets dergelijks) onderdeel van ADO.NET).


  1. Niets doen in een triggerprocedure

  2. POWER() Voorbeelden in SQL Server

  3. Niet-herkende optie:-MaxMetaspaceSize=256m

  4. Hoe werkt indexeren?