Je pense que vous voulez dire quelque chose comme:
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; }
}
Votre problème d'origine est un avertissement que le C#8 introduit à être plus explicite avec null en mesure de types de référence. Pour une entité, la mise en œuvre n'est pas valide à moins que ces relations sont en effet en option, ce qui nécessiterait leur FK champs (nom d'utilisateur et PostId) d'être aussi Nulle-mesure. Il est probable qu'ils sont pas en option.
Les principales options à cette adresse:
A) désactiver la fonctionnalité. (Désactiver null capable de références dans le projet)
B) de Demander "pardon" pour le fait qu'ils ne doivent jamais être nulle, mais ne sera pas dans un état valide la construction. (EF gérer)
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!;
}
Modifier le modèle pour marquer les propriétés de navigation comme nulle capable de références est susceptible de causer toutes sortes de problèmes avec les migrations il peut et va commencer à remplacer en mesure non null FKs avec null-mesure ceux. Pour marquer ces références comme Nulle et garder EF heureux:
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; }
}
Ce qui est presque certainement pas ce que vous voulez dans votre domaine, ou même si un nom d'utilisateur et PostId font partie d'un PK.
Personnellement, je suis farinage ce changement en C# comme un "champ de mines" MS initialement activé par défaut, tels que Côté Client, l'Évaluation de l'EF. :)
Je prévois d'une StackOverflow questions autour de cet avertissement ou de la rupture de changements, et beaucoup d'-un-client code parsemé de "!" le pardon des balises que les anciens non-null-mesure d'objets/références sont transmis dans le code avec la valeur null en mesure de vérification des références.