.NET Core 3.0プロジェクトでC#8.0 Nullable参照型を有効にしています。プロジェクトはEntity Framework Core 3.0を使用してデータベースにアクセスします。
以下は、タイトルがnullであってはならないデータモデルです。
public class Vehicle
{
public int Id { get; private set; }
public string Title { get; private set; }
// Entity Framework Core is instructed to bind to the private _drivers field in a configuration builder
private readonly List<Driver> _drivers = new List<Driver>();
public IReadOnlyCollection<Driver> Drivers => _drivers.AsReadOnly();
private Vehicle()
{
}
public Vehicle(string title)
{
this.Title = title;
}
public void AddDriver(string name)
{
this._drivers.Add(new Driver(name));
}
}
// A foreign column is defined in a configuration builder
public class Driver
{
public int Id { get; private set; }
public string Name { get; private set; }
private Driver()
{
}
public Driver(string name)
{
this.Name = name;
}
}
独自のコードは、Entity Framework Coreと(場合によっては)シリアル化でデータベースからこれらのクラス/モデルに値をバインドできるようにするためにコンストラクターが存在する場合にpublic
のみ、コンストラクターを使用することになっていますprivate
。パブリックコンストラクターは、モデルのプロパティとは異なる構造、リスト、および引数のタイプを持っている場合があります(たとえば、最初の必須の子の引数が含まれている場合や、オプションの引数がある場合など)。
ただし、コンパイラーCS8618 Non-nullable field is uninitialized. Consider declaring as nullable.
はprivate
コンストラクターで生成します。
私はprivate
コンストラクターでCS8616を無効にすることができ#pragma warning disable CS8618
ますが、それは良い考えではないと思います。
このシナリオでC#8.0 Nullable参照型を使用する方法を教えてください。または、私のモデルは偽物であるか、ベストプラクティスに違反していますか?適切に行う方法は?
残念ながら、関連するドキュメントやガイダンスは見つかりませんでした。