Tôi có một DTO được điền bằng cách đọc từ bảng DynamoDB. Nói rằng nó trông như thế này hiện tại:
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
}
Có thực hành tốt nhất phát triển để đối phó với điều này? Tôi muốn tránh một nhà xây dựng không tham số vì nó chơi không tốt với ORM trong SDK Động (cũng như các công cụ khác).
Nó có vẻ lạ đối với tôi để viết public string Id { get; set; } = "";
bởi vì điều này sẽ không bao giờ xảy ra vì Id
là một PK và không bao giờ có thể là null. Việc sử dụng sẽ ""
là gì ngay cả khi nó bằng cách nào đó?
Vì vậy, bất kỳ thực hành tốt nhất về điều này?
- Tôi có nên đánh dấu tất cả chúng
string?
để nói rằng chúng có thể là null mặc dù một số không bao giờ nên như vậy. - Tôi có nên khởi
Id
vàName
với""
vì họ nên không bao giờ được null và chương trình này mục đích cho dù""
sẽ không bao giờ được sử dụng. - Một số kết hợp ở trên
Xin lưu ý: đây là về loại tham chiếu vô hiệu C # 8 Nếu bạn không biết những gì tốt nhất không trả lời.
= ""
, bạn có thể sử dụng = null!
để khởi tạo một thuộc tính mà bạn biết sẽ không bao giờ có hiệu quả null
(khi trình biên dịch không có cách nào để biết điều đó). Nếu Description
có thể hợp pháp null
, nó nên được khai báo a string?
. Ngoài ra, nếu việc kiểm tra tính không hợp lệ đối với DTO gây nhiều phiền toái hơn là trợ giúp, bạn chỉ có thể bọc loại trong #nullable disable
/ #nullable restore
để tắt NRT cho loại này.
#pragma warning disable CS8618
vào đầu tập tin.