DynamoDBテーブルから読み取ることで入力されるDTOがあります。現在、次のようになっているとします。
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
}
これに対処するためのベストプラクティスはありますか?Dynamo SDK(およびその他)のORMでうまく機能しないため、パラメーターなしのコンストラクターは避けたいと思います。
これはPKであり、nullにpublic string Id { get; set; } = "";
なることはないため、これが発生することはないため、書くのは奇妙に思えId
ます。""
とにかく何とかしてもどう使うのでしょうか?
これに関するベストプラクティスはありますか?
string?
ヌルにすることはできなくてもヌルになる可能性があるとすべてにマークを付ける必要があります。- 私は初期化すべきである
Id
とName
して""
、彼らはのでべきでヌルと、このショーになることはありません意図は、たとえ""
使用されることはありませんでしょう。 - 上記のいくつかの組み合わせ
注意:これはC#8のnull許容参照型に関するものです。
= ""
を使用= null!
するのではなく、を使用して、実際には効果的でないことがわかっているプロパティを初期化できますnull
(コンパイラーがそれを知る方法がない場合)。Description
合法的にできる場合はnull
、それを宣言する必要がありstring?
ます。または、DTOのnull 可能性チェックがヘルプよりも厄介な場合は、単にタイプを#nullable disable
/ #nullable restore
にラップして、このタイプのみのNRTをオフにすることができます。
#pragma warning disable CS8618
、ファイルの上部で平手打ちできます。