Myslím si, že říct něco jako:
public class PostFile {
public Int32 UserId{ get; set; }
public Int32 PostId { get; set; }
public virtual User? User { get; set; }
public virtual Post? Post { get; set; }
}
Vaše původní otázka je varování, že C#8 představil s tím, že více explicitní s null-možné referenční typy. Pro účetní jednotky, výše plnění není platná, dokud tyto vztahy jsou sice nepovinné, které by vyžadovaly jejich FK polí (Uživatelské jméno a PostId) být také Null-možné. Oni jsou pravděpodobně není volitelné.
Hlavní možností, jak řešit tento:
A) vypněte funkci. (Zakázat null-možné odkazy v projektu)
B) Zeptejte se "odpuštění" za skutečnost, že tyto by nikdy neměla být null, ale není v platném stavu na stavbě. (EF bude spravovat)
public class PostFile {
public Int32 UserId{ get; set; }
public Int32 PostId { get; set; }
public virtual User User { get; set; } = null!;
public virtual Post Post { get; set; } = null!;
}
Změna modelu označit navigační vlastnosti jako null-možné odkazy, je pravděpodobné, že způsobí, že všechny druhy problémů, jako s migrací to může, a začne nahrazení non-null-možné FKs s null-možné ty. Označit tyto odkazy jako Null-možné a udržet EF šťastný:
public class PostFile {
public Int32? UserId{ get; set; }
public Int32? PostId { get; set; }
public virtual User? User { get; set; }
public virtual Post? Post { get; set; }
}
Což je téměř jistě není to, co chcete ve vaší doméně, nebo dokonce legální, pokud UserId a PostId jsou součástí PK.
Osobně jsem křídování tato změna v C# jako "pozemní mina" MS zpočátku povoleno ve výchozím nastavení, jako je na Straně Klienta Hodnocení v EF. :)
Předvídám, že mnoho-a-StackOverflow otázky kolem tohoto varování nebo lámání změny, a mnoho-to-client codebases plná "!" odpuštění značky jako starší non-null-možné objekty/odkazy jsou předány do kódu s null-možné referenční kontroly.