2010-05-12 3 views
0

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

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

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

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

bindingSourceMarki.DataSource = markiQuery;  

Последняя строка бросает ArgumentNullException с ParamName: сущность. Когда я изменить свой код к этому:

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

bindingSourceMarki.DataSource = markiQuery; 

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

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

[UPDATE]

Я побежал другой запрос на моей базе данных:

выберите * from modelemaster, где model_id не в (select model_id from typymaster)

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

[UPDATE]

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

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

ответ

0

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

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

? По MSDN:

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

+0

Спасибо за ответ. это то же самое, но я обновил новую информацию. Считаете ли вы, что это может быть проблемой;) –

0

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

+0

Я добавил фрагмент файла .edmx к вопросу. кажется, что имена правильны –

Смежные вопросы