首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架,ArgumentNullException

实体框架,ArgumentNullException
EN

Stack Overflow用户
提问于 2010-05-12 15:13:49
回答 2查看 595关注 0票数 0

我有一个结构简单的数据库:

代码语言:javascript
复制
markimaster(id, name), modelemaster(id, marka_id), typymaster(id, model_id)

我用下面的代码定义了表和获取数据之间的关系:

代码语言:javascript
复制
ObjectQuery<markimaster> markiQuery = context.markimaster.Include("modelemaster.typymaster");

bindingSourceMarki.DataSource = markiQuery;    

最后一行抛出具有ParamName:entity的ArgumentNullException。当我将代码更改为以下代码时:

代码语言:javascript
复制
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文件的片段

代码语言:javascript
复制
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的路径中使用的名称似乎是正确的

EN

回答 2

Stack Overflow用户

发布于 2010-05-12 15:57:37

修改第一段代码会发生什么

代码语言:javascript
复制
bindingSourceMarki.DataSource = markiQuery.Execute(MergeOption.AppendOnly);

?根据MSDN的说法

若要将对象绑定到Windows窗体控件,请将该控件的DataSource属性设置为EntityCollection或在ObjectQuery对象上调用Execute方法时返回的ObjectResult。

票数 0
EN

Stack Overflow用户

发布于 2010-05-12 16:24:44

问题似乎与错误的EntitySet名称有关。

请检查您是否传递了要包含的正确路径(可能是复数或区分大小写问题)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2816661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档