Tengo un DTO que se completa leyendo desde una tabla DynamoDB. Digamos que se ve así actualmente:
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
}
¿Existe alguna práctica recomendada para hacer frente a esto? Prefiero evitar un constructor sin parámetros ya que eso juega mal con el ORM en el SDK de Dynamo (así como otros).
Me parece extraño escribir public string Id { get; set; } = "";
porque esto nunca sucederá ya que Id
es un PK y nunca puede ser nulo. ¿Qué uso sería ""
incluso si de alguna manera lo hiciera?
Entonces, ¿alguna mejor práctica en esto?
- ¿Debo marcarlos a todos
string?
para decir que pueden ser nulos, aunque algunos nunca deberían serlo? - Debería inicializar
Id
yName
con""
porque nunca deberían ser nulos y esto muestra la intención a pesar de""
que nunca se usaría. - Alguna combinación de arriba
Tenga en cuenta: se trata de los tipos de referencia anulables C # 8. Si no sabe cuáles son los mejores, no responda.
= ""
eso, puede usar = null!
para inicializar una propiedad que sabe que nunca será efectiva null
(cuando el compilador no tiene forma de saberlo). Si Description
puede ser legalmente null
, debe declararse a string?
. Alternativamente, si la comprobación de nulabilidad para el DTO es más molesta que ayuda, simplemente puede ajustar el tipo #nullable disable
/ #nullable restore
desactivar los NRT solo para este tipo.
#pragma warning disable CS8618
en la parte superior del archivo.