Myslím, že máte na mysli niečo ako:
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é vydanie je varovanie, že C#8 predstavil s tým, že viac explicitné s null-možnosť referenčné typy. Pre účtovná jednotka, nad implementácia nie je platné, pokiaľ nie sú tieto vzťahy sú síce nepovinné, ktoré by si vyžadovali ich FK polia (UserId a PostId), aby aj Null-schopný. Oni pravdepodobne sú nie voliteľné.
Hlavné možnosti na riešenie tohto:
A) vypnúť funkciu. (Zakázať null-možnosť odkazy v projekte)
B) Žiadať "odpustenie" za to, že tieto by mali byť nikdy null, ale nebude v platnom štátu na výstavbu. (EF bude ich spravovať)
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!;
}
Zmena modelu označiť navigáciu vlastnosti ako null-možnosť odkazy je spôsobilá zapríčiniť, všetky druhy problémov, ako s migrácie môže, a začne výmena non-null-možnosť FKs s null-vedieť ty. Označiť tieto odkazy, tak Null-schopný a udržať EF happy:
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; }
}
Čo je takmer určite nie je to, čo chcete vo vašej doméne, alebo aj právne ak UserId a PostId sú súčasťou PK.
Osobne som sa chalking táto zmena v C# ako "mínu" MS povolené pôvodne štandardne, ako na Strane Klienta Hodnotenie v EF. :)
Som predvídať veľa-a-StackOverflow otázky okolo tohto varovania alebo lámanie zmeny, a veľa-a-klient codebases podstielky s "!" odpustenie značky ako starší než null-možnosť objekty/odkazy sú prešiel do kódu s null-možnosť kontroly referencií.