Ho un DTO che viene popolato leggendo da una tabella DynamoDB. Di 'che al momento sembra così:
public class Item
{
public string Id { get; set; } // PK so technically cannot be null
public string Name { get; set; } // validation to prevent nulls but this doesn't stop database hacks
public string Description { get; set; } // can be null
}
Esistono delle migliori pratiche per lo sviluppo di questo? Preferirei evitare un costruttore senza parametri poiché questo gioca male con l'ORM nell'SDK di Dynamo (così come altri).
Mi sembra strano scrivere public string Id { get; set; } = "";
perché questo non accadrà mai poiché Id
è un PK e non può mai essere nullo. A che serve ""
anche se lo facesse comunque?
Quindi qualche buona pratica su questo?
- Devo contrassegnarli tutti
string?
per dire che possono essere nulli anche se alcuni non dovrebbero mai esserlo. - Devo inizializzare
Id
eName
con""
perché non dovrebbero mai essere nulli e questo dimostra l'intento anche se""
non sarebbe mai stato usato. - Qualche combinazione di cui sopra
Nota: si tratta di tipi di riferimento annullabili C # 8 Se non sai cosa sono meglio non rispondere.
= ""
, puoi usare = null!
per inizializzare una proprietà che sai che non sarà mai efficace null
(quando il compilatore non ha modo di saperlo). Se Description
può essere legalmente null
, dovrebbe essere dichiarato a string?
. In alternativa, se il controllo della nullità per il DTO è più fastidioso dell'aiuto, è possibile semplicemente avvolgere il tipo in #nullable disable
/ #nullable restore
per disattivare i NRT solo per questo tipo.
#pragma warning disable CS8618
nella parte superiore del file.