我有一个结构简单的数据库:
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的新手,我不知道哪里出了问题,所以来到这里寻求建议;)
更新
我在我的数据库上运行了其他查询:
select * from modelemaster model_id not in (select model_id from 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"因此,传递给Include的路径中使用的名称似乎是正确的
发布于 2010-05-12 15:57:37
修改第一段代码会发生什么
bindingSourceMarki.DataSource = markiQuery.Execute(MergeOption.AppendOnly);?根据MSDN的说法
若要将对象绑定到Windows窗体控件,请将该控件的DataSource属性设置为EntityCollection或在ObjectQuery对象上调用Execute方法时返回的ObjectResult。
发布于 2010-05-12 16:24:44
问题似乎与错误的EntitySet名称有关。
请检查您是否传递了要包含的正确路径(可能是复数或区分大小写问题)。
https://stackoverflow.com/questions/2816661
复制相似问题