PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Parametry Npgsql 4.0 i wartości Null

Nowy interfejs API parametrów generycznych rzeczywiście ma problem — powinien akceptować zwykłe null platformy .NET (a nie DBNull.Value ), otworzyłem ten problem aby to śledzić, zostanie to naprawione w 4.0.3.

Pamiętaj, że jako notatka dotycząca dokumentacji mówi, celem ogólnego API jest unikanie używania Value właściwość, która jest typu object . Jeśli używasz ogólnego NpgsqlParameter<int> ale przypisz Value , Twoje int zostanie zapakowane, co będzie niweczyć cel interfejsu API. Powinieneś przypisywać do TypedValue , który jest typu int i nie będzie boksować. Dlatego też nie możesz przypisać DBNull.Value aby wskazać wartość null (jest to inny typ .NET).

Kilka uwag na temat tego, czy ten nowy ogólny interfejs API powinien być używany:

  • Jeśli piszesz wiele typów wartości (np. int , DateTime ...) spowoduje to usunięcie wszystkich przydziałów boksów. To, czy będzie to miało znaczenie, zależy od Twojej aplikacji - profiluj ostrożnie.
  • Ogólne interfejsy API powinny być zawsze preferowane w stosunku do nieogólnych, gdy typ jest znany w czasie kompilacji. Pozwala to kompilatorowi wcześnie sprawdzić poprawność typu i czyni kod bardziej przejrzystym - używamy List<string> zamiast ArrayList jako kwestia dobrego kodowania, nawet jeśli wydajność nie jest problemem
  • Główną (jedyną?) wadą ogólnego interfejsu API jest to, że jest on specyficzny dla Npgsql, dzięki czemu Twój kod nie może być przenoszony do innych sterowników baz danych (chociaż wystąpił problem za zrobienie tej (lub podobnej) części ADO.NET).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odśwież widok zmaterializowany automatycznie za pomocą reguły lub powiadom

  2. Jak zmienić własność niektórych tabel w bazie danych z postgres na innego użytkownika?

  3. PostgreSQL:Jak połączyć tabele 3 posortowane według daty

  4. Jak udostępnić tabelę między wieloma bazami danych Postgresql

  5. Jak używać Joda-Time z java.sql.Timestamp