Entity Framework, ArgumentNullException - PullRequest
0 голосов
/ 12 мая 2010

У меня есть база данных с простой структурой:

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

Я определил отношения между таблицами и выборкой данных с помощью этого кода:

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

bindingSourceMarki.DataSource = markiQuery;    

Последняя строка выдает исключение ArgumentNullException с ParamName: entity. Когда я изменяю свой код на это:

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

bindingSourceMarki.DataSource = markiQuery;

это работает (значит, не выдает исключение), поэтому я подумал, что, может быть, есть строка в typymaster, у которой в corelemaster нет строки с ответом на запрос, но проверка базы данных ничего не показывает.

Поскольку я новичок в EntityFramework, я понятия не имею, что не так, поэтому пришел сюда в поисках совета;)

[UPDATE]

Я запустил другой запрос в своей базе данных:

выберите * из modelemaster, где не указан model_id (выберите model_id из typymaster)

, который возвращает 2000 строк. Так что есть модели, у которых нет типов.

* * Тысяча двадцать-одина [ОБНОВЛЕНИЕ] * * тысяча двадцать-дв

Это фрагмент моего .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"

кажется, что имена, использованные в пути, переданном для включения, верны

Ответы [ 2 ]

0 голосов
/ 12 мая 2010

Кажется, проблема связана с неправильным именем EntitySet.
Убедитесь, что вы указали правильный путь для включения (возможно, проблема множественного числа или учета регистра).

0 голосов
/ 12 мая 2010

Что происходит, когда вы меняете первый фрагмент кода с помощью

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

? Согласно MSDN :

Чтобы привязать объекты к элементу управления Windows Form, задайте для свойства DataSource элемента управления значение EntityCollection или ObjectResult, которое возвращается при вызове метода Execute для объекта ObjectQuery .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...