我的数据库结构简单:
markimaster(id, name), modelemaster(id, marka_id), typymaster(id, model_id)
我使用以下代码定义了表之间的关系并获取数据:
ObjectQuery<markimaster> markiQuery = context.markimaster.Include("modelemaster.typymaster");
bindingSourceMarki.DataSource = markiQuery;
最后一行使用ParamName:entity抛出ArgumentNullException。 当我将代码更改为:
ObjectQuery<markimaster> markiQuery = context.markimaster.Include("modelemaster");
bindingSourceMarki.DataSource = markiQuery;
它工作(意味着不会抛出异常),所以我想也许在typymaster中有一行没有在modelemaster中有相应的行,但是检查数据库什么都没有显示。
由于我是EntityFramework的新手,我不知道出了什么问题,所以来到这里寻找建议;)
[UPDATE]
我在我的数据库上运行了其他查询:
从modelemaster中选择*,其中model_id不在(从typymaster中选择model_id)
返回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"
所以在传递给Include的路径中使用的名称似乎是正确的
答案 0 :(得分:0)
使用
更改第一段代码时会发生什么bindingSourceMarki.DataSource = markiQuery.Execute(MergeOption.AppendOnly);
?根据{{3}}:
要将对象绑定到Windows窗体控件,请将控件的DataSource属性设置为EntityCollection 或在ObjectQuery对象上调用Execute方法时返回的ObjectResult 。
答案 1 :(得分:0)
问题似乎与错误的EntitySet名称有关。
请检查您是否已通过包含的正确路径(可能是复数或区分大小写问题)。