首页 新闻 搜索 专区 学院

EF MVC4 查询问题 求教!!!

0
悬赏园豆:100 [已解决问题] 解决于 2015-04-23 10:57

SellOrder 的model中有 public virtual ICollection<SellItem> SellItems { get; set; }

 

SellItem 表中有Goods表的主键 id 和 SellOrder 的主键 id

 

现在想要在SellOrder 的Controllers 中通过SellItems  查询到 Goods表中的数据。

不知道怎么写。救命啊!!!!

光阳的主页 光阳 | 初学一级 | 园豆:114
提问于:2015-04-22 09:58
< >
分享
最佳答案
0

直接使用SellItems难道不行吗?

收获园豆:100
幻天芒 | 高人七级 |园豆:36912 | 2015-04-22 10:48

直接使用SellItems 只能取到自己表里面的数据。 Goods的查不到

光阳 | 园豆:114 (初学一级) | 2015-04-22 13:18

@光阳: SellItems不是Goods表的实体么?如果不是话,就不能直接关联查询了。如果不强求用lambda方式的话,可以直接EF动态查询。

幻天芒 | 园豆:36912 (高人七级) | 2015-04-22 13:42

@幻天芒:

SellOrder 的model中有 public virtual ICollection<SellItem> SellItems { get; set; }

SellItem 表里面存的是SellOrder   和 Goods 的主键id

 

现在就是想做个查询返回到view上。 goods表只有一个主键id在SellItem 表中。

 

光阳 | 园豆:114 (初学一级) | 2015-04-22 14:17

@幻天芒: 不让我发图。你有时间吗。我加你QQ截图给你看下。谢谢了

光阳 | 园豆:114 (初学一级) | 2015-04-22 14:19

@光阳: 上班无Q。你试下楼下的方式吧。你这样的设计不太符合EF的模式呢。。

幻天芒 | 园豆:36912 (高人七级) | 2015-04-22 14:29

@幻天芒: 弄明白了。是直接把id 传到SellItems表对比。数据就的查出来了。

现在是返回return View(sel);  sel是查询的list。

不知道 view中怎么把sel中的数据展示出来了。。。

光阳 | 园豆:114 (初学一级) | 2015-04-22 16:01

@光阳: 既然是强类型,那就点点点就出来了。

幻天芒 | 园豆:36912 (高人七级) | 2015-04-22 16:57

@幻天芒: 数据出来了。现在还有个小问题帮忙看看呗

@Html.ActionLink("返回上一步修改", "Create", new { id = Model.SellOrderId })

返回上一步需要带id过去。现在我不管怎么写id的值都报错:

CS1061: “System.Collections.Generic.IEnumerable<TheNew.Areas.sell.Models.SellItem>” 不包含“SellOrderId”的定义,并且找不到可接受类型为 “System.Collections.Generic.IEnumerable<TheNew.Areas.sell.Models.SellItem>” 的第一个参数的扩展方法“SellOrderId”(是否缺少 using 指令或程序集引用?)

 

view上面的引用:

@using TheNew.Areas.sell.Models
@model IEnumerable<TheNew.Areas.sell.Models.SellItem>

光阳 | 园豆:114 (初学一级) | 2015-04-23 09:47

@光阳: 后台数据过来,用IList吧。

幻天芒 | 园豆:36912 (高人七级) | 2015-04-23 09:51

@幻天芒: 返回的是Lits 

光阳 | 园豆:114 (初学一级) | 2015-04-23 10:04

@光阳: return View(orders.ToList());

光阳 | 园豆:114 (初学一级) | 2015-04-23 10:04

@光阳: 你的Model是个List,那肯定点不出来Model.SellOrderId啊。。。

幻天芒 | 园豆:36912 (高人七级) | 2015-04-23 10:07

@幻天芒: 里面的SellOrderId 值是唯一的。有没有办法取出来。我传到别的页面?

光阳 | 园豆:114 (初学一级) | 2015-04-23 10:16

@光阳: 如果唯一,那可以用

if(Model!=null && Model.Count >0)

{  

  Model[0].SellOrderId

}

幻天芒 | 园豆:36912 (高人七级) | 2015-04-23 10:39

@幻天芒:  无法将带 [ ] 的索引应用于“System.Collections.Generic.IEnumerable<TheNew.Areas.sell.Models.SellItem>”类型的表达式

 

 @Html.ActionLink("返回上一步修改", "Create", new { id = Model[0].SellOrderId })

直接这么写行么。

光阳 | 园豆:114 (初学一级) | 2015-04-23 10:49

@光阳: @model IList<TheNew.Areas.sell.Models.SellItem>

幻天芒 | 园豆:36912 (高人七级) | 2015-04-23 10:51

@幻天芒: Model.FirstOrDefault().SellOrderId 是这么写的。ok了取到值了。结贴。谢谢

光阳 | 园豆:114 (初学一级) | 2015-04-23 10:57

@光阳: :)不过建议你还是要多注意下C#的基础知识。比如部分语法和类型转换等。

幻天芒 | 园豆:36912 (高人七级) | 2015-04-23 11:04
其他回答(1)
0

var data = context.SellOrder.Include(n => n.SellItems.Select(g=> g.Goods));

Yu | 园豆:12980 (专家六级) | 2015-04-22 11:06

return View(data.tolist());

这样返回对吗。怎么把查询结果返回到 View上面?

SellOrder sel = db.SellOrders.Find(id);

return View(sel);

我原来是这么写的。但是只能查到model.SellItems 里面的值查不到goods

支持(0) 反对(0) 光阳 | 园豆:114 (初学一级) | 2015-04-22 13:23

public ActionResult Choose(string id)
{

var data = db.SellOrders.Include(n => n.SellItems.Select(g => g.Goods) );

//SellOrder sel = db.SellOrders.Find(id);

return View(这里的返回值怎么写呀);

支持(0) 反对(0) 光阳 | 园豆:114 (初学一级) | 2015-04-22 13:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册