.NET Core 3.0 프로젝트에서 C # 8.0 Nullable Reference Types를 활성화하고 있습니다. 이 프로젝트는 Entity Framework Core 3.0을 사용하여 데이터베이스에 액세스합니다.
다음은 Title이 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;
}
}
자체 코드는 public
생성자 를 사용하는 동안에 만 private
생성자가 있지만 Entity Framework Core 및 직렬화가 데이터베이스의 값을 이러한 클래스 / 모델에 바인딩 할 수 있습니다. 퍼블릭 생성자는 모델이 가진 속성과 다른 구조, 목록 및 인수 유형을 가질 수 있습니다 (예를 들어, 첫 번째 필수 자식에 대한 인수를 포함하거나 선택적 인수 등이있을 수 있음).
그러나 컴파일러 CS8618 Non-nullable field is uninitialized. Consider declaring as nullable.
는 private
생성자 에서 생성합니다.
나는 private
생성자에 대해 CS8616을 비활성화 할 수 는 #pragma warning disable CS8618
있지만 좋은 생각으로 생각하지는 않습니다.
이 시나리오에서 C # 8.0 Nullable Reference Types를 어떻게 사용해야합니까? 또는 내 모델이 가짜이거나 모범 사례를 위반합니까? 올바르게 수행하는 방법은 무엇입니까?
불행히도, 나는 관련 문서 나 지침을 찾지 못했습니다.