Sanırım şöyle bir şey demek istiyorsun:
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; }
}
Asıl sorununuz, C # 8'in boş referans türleriyle daha açık olmasıyla ortaya çıkan bir uyarıdır. Bir varlık için, bu ilişkiler gerçekten isteğe bağlı olmadıkça, FK alanlarının (UserId ve PostId) da Boş olmasını gerektiren yukarıdaki uygulama geçerli değildir. Muhtemelen isteğe bağlı değildirler.
Bunu ele almak için ana seçenekler:
A) Özelliği kapatın. (Projedeki boş başvuruları devre dışı bırak)
B) Bunların asla boş olmaması gerektiği, ancak inşaatta geçerli bir durumda olmayacağı için "af" dileyin. (EF onları yönetecek)
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!;
}
Gezinme özelliklerini null-able başvuruları olarak işaretlemek için modeli değiştirmek, geçişlerde olduğu gibi her türlü soruna neden olabilir ve null-able olmayan FK'LERİ null-able olanlarla değiştirmeye başlar. Bu referansları Null olarak işaretlemek ve ef'yi mutlu etmek:
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; }
}
Kullanıcı kimliği ve PostId bir pk'nin parçasıysa, etki alanınızda neredeyse kesinlikle istediğiniz şey değildir, hatta yasaldır.
Şahsen, C# ' daki bu değişikliği, ef'deki İstemci Tarafı Değerlendirmesi gibi başlangıçta varsayılan olarak etkinleştirilmiş bir "kara mayını" MS olarak yazıyorum. :)
Bu uyarı veya kırılma değişiklikleriyle ilgili birçok-a-StackOverflow sorusu ve"!"eski boş olmayan nesneler/referanslar olarak bağışlama etiketleri, boş olan referans kontrolleriyle koda geçirilir.