Pourquoi ne Entity Framework retourner la valeur null Liste<> à la place de ceux qui sont vides?
Je suis assez nouveau dans l'ASP .NET MVC monde. Peut-être, c'est la raison pour laquelle je ne peux pas l'expliquer à moi-même la cause de ce qui est, pour moi, un problème ennuyeux.
J'ai une classe avec Un-À-Plusieurs relashionship.
class MyClass{
public List<OtherClass> otherClasses {get;set;}
}
Quand je suis à la persistance d'une instance de cette classe, je le remplir en relation avec une Liste vide<>
MyClass myClass = new MyClass(){ otherClasses = new List<OtherClass>() }
context.myClass.Add(myClass);
Le problème est que, lorsque j'essaie de récupérer l'instance, et pour une raison quelconque, j'essaie d'accéder à cette liste, le système me donne une Référence Nulle Exception...
Ma question est: pourquoi ne pas EF de retour à vide des listes au lieu de null ceux? Surtout dans ce cas, que je vais persister avec une liste vide?
Il existe un moyen d'éviter de vérifier que si les instances sont nuls?
- qu'est-ce que vous cadre de l'entité de la classe?
Vous devez vous connecter pour publier un commentaire.
Vous devriez avoir votre entité créer ces listes dans le constructeur. EF ne crée pas dépendante des collections, et s'attend l'entité à le faire.
Donc, votre cas, vous devez faire de votre entité comme ceci:
Faire la
otherClasses
collection virtuelle. Cela permettra EF charge paresseux de la collection.Sinon, utilisez avide de chargement avec
Include
méthode.JsonIgnore
pour empêcher un retour de la liaison de navigation de la propriété d'être sérialisé.Donc, si je comprends bien, l'ajout d'un vide
List<OtherClass>
au contexte et puis essayer de le récupérer.Je suppose que vous devez penser à la façon dont le contexte permettra de suivre et d'interroger les entités qui sont dans son contexte. Ceci est habituellement fait par la
Key
de l'entité. Dans votre exemple, vous n'avez pas donné l'entité unKey
, par conséquent, le contexte n'a pas de poignée sur l'entité.Par conséquent, lorsque vous effectuez une requête, le contexte ne trouvez pas un objet et renvoie la valeur null.
Si vous souhaitez initialiser une nouvelle entité, je vous recommande de lui donner au moins un
Key
(généralement la propriété Id), puis sélectionnez par cette clé lors de la recherche plus tard.Espère que cette aide.