首页 新闻 会员 周边

【多图】ADO.NET Entity Framework如何获得实体对象的导航属性?

0
悬赏园豆:20 [已解决问题] 解决于 2008-10-18 22:55

我在获取实体对象的导航属性时,获取的总是空值或者空集合,而其他非导航属性就都是正常的,难道我的方法有问题??

请看我详述问题经过:

首先建立一个新数据库,设计car表,表示汽车:

再设计一个man表,表示持有人:

设置它们的关系:

 

然后分别填写一些数据:

请在此注意持有者的第一条数据:“李丽”,她持有一辆“兰博基尼”。

接下来生成数据实体模型:

不作任何修改,直接保存,然后尝试在Label中显示第一个持有者的名称:

可以看到正常获取了持有者名称:

然后我修改一下代码,以在Label中显示这个人所持有的车的名称:

结果却引发了异常:

 

在这里获取到的车是null,而翻到前面看数据库中“李丽”是持有一个“兰博基尼”的,为什么获取不到呢?

请教是不是我哪里做错了?

问题补充: 参考:http://www.cnblogs.com/blusehuang/archive/2007/10/10/920020.html “在Entity Framework中进行一对多的查询很简单,但是值得注意的是Entity Framework默认是Lazy Load,即关联数据在需要的时候才加载。 在本例子中,如果直接查询该Customer关联的orders,查询不到结果。 foreach (var order in alfki.Orders) { Console.WriteLine(order.OrderID); } 需要在使用orders之前调用 alfki.Orders.Load(), 再次运行便可以得到正确的结果。” 问题解决了,最终代码修改为这样既可: protected void Page_Load(object sender, EventArgs e) { using (var c=new testdbEntities()) { var man = c.man.First(); man.carReference.Load(); Label1.Text = man.car.name; } }
斯克迪亚的主页 斯克迪亚 | 老鸟四级 | 园豆:4124
提问于:2008-10-18 20:08
< >
分享
最佳答案
0

ADO.NET Entity Framework没用过。

PS:楼主的VS开发环境颜色高亮不错,配置文件能给咱发一份吗。passvcword@126.com

Astar | 高人七级 |园豆:40805 | 2008-10-18 22:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册