2010-05-12 2 views
0

J'ai base de données avec une structure simple:Entity Framework, ArgumentNullException

markimaster(id, name), modelemaster(id, marka_id), typymaster(id, model_id) 

je définissais les relations entre les tables et récupérer les données avec ce code:

ObjectQuery<markimaster> markiQuery = context.markimaster.Include("modelemaster.typymaster"); 

bindingSourceMarki.DataSource = markiQuery;  

Dernière ligne lance ArgumentNullException avec ParamName: entité. Quand je change mon code à ceci:

ObjectQuery<markimaster> markiQuery = context.markimaster.Include("modelemaster"); 

bindingSourceMarki.DataSource = markiQuery; 

c'est un travail (moyen ne jette pas exception), donc je pensais que peut-être il est rangée dans typymaster qui n'a pas eu lui correspondant ligne dans modelemaster, mais la vérification des émissions de base de données rien.

Depuis que je suis nouveau EntityFramework Je ne sais pas ce qui ne va pas, donc venu ici pour chercher conseil;)

[UPDATE]

J'ai couru autre question sur ma base de données:

select * from modelemaster où model_id n'est pas dans (select model_id from typymaster)

qui renvoie 2000 lignes. Il y a donc des modèles qui n'ont pas de type.

[UPDATE]

Ce fragment est de mon fichier .edmx

EntitySet Name="markimaster" EntityType="MMT_Master.store.markimaster" store:Type="Tables" Schema="public" 
EntitySet Name="modelemaster" EntityType="MMT_Master.store.modelemaster" store:Type="Tables" Schema="public" 
EntitySet Name="typymaster" EntityType="MMT_Master.store.typymaster" store:Type="Tables" Schema="public" 

Il semble donc que les noms utilisés dans le chemin passé à inclure sont corrects

Répondre

0

Qu'est-ce qui se passe lorsque vous modifiez la première morceau de code avec

bindingSourceMarki.DataSource = markiQuery.Execute(MergeOption.AppendOnly); 

? Selon MSDN:

Pour lier des objets à un contrôle Windows Form, définissez la propriété DataSource du contrôle à la EntityCollection ou à la ObjectResult qui est renvoyée lorsque la méthode d'exécution est appelée sur un objet ObjectQuery.

+0

Merci pour la réponse. c'est pareil, mais j'ai mis à jour de nouvelles infos. Pensez-vous que cela pourrait être un problème;) –

0

Le problème semble être associé au mauvais nom EntitySet.
Veuillez vérifier que vous avez passé le bon chemin vers l'option Inclure (peut-être le problème de la pluralisation ou de la sensibilité à la casse).

+0

J'ai ajouté un fragment de fichier .edmx à la question. il semble que les noms sont corrects –