Bir .NET Core 3.0 projesinde C # 8.0 Nullable Reference Türlerini etkinleştiriyorum. Proje, veritabanına erişmek için Entity Framework Core 3.0 kullanır.
Aşağıda, Başlığı boş olmaması gereken bir veri modeli verilmiştir.
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;
}
}
Kendi kodunun public
yapıcıları yalnızca yapıcılar yalnızca private
Entity Framework Core ve (potansiyel olarak da) serileştirmenin değerleri veritabanından bu sınıflara / modellere bağlamak için izin vermek için orada olduğu zaman kullanması gerekir. Genel kurucu, modelin sahip olduğu özelliklerden farklı yapı, liste ve tür argümanlarına sahip olabilir (örneğin, ilk gerekli çocuk için argümanlar da içerebilir, isteğe bağlı bazı argümanlar olabilir vb.).
Ancak, derleyici yapıcılar CS8618 Non-nullable field is uninitialized. Consider declaring as nullable.
üzerinde üretir private
.
Ben devre dışı CS8616 am güçlü private
tarafından yapıcıları #pragma warning disable CS8618
ama iyi bir fikir olarak düşünmüyoruz.
Bu senaryoda C # 8.0 Nullable Reference Türleri nasıl kullanılır? Yoksa modelim sahte veya en iyi uygulamaları ihlal ediyor - nasıl düzgün bir şekilde yapılır?
Ne yazık ki, ilgili dokümanlar veya rehberlik bulamadım.