EF+MVC3的问题,连表的MODEL怎么用EF进行查询.

superj 2012-04-14 04:23:27
初次用EF和MVC3
我用的是CODE FIRST模式
现在有一个会议室MODEL 一个预定会议室的MODEL结构如下
[Key]
public int OrderId { get; set; }
[Required]
[Display(Name = "会议室")]
public int MeetingRoomId { get; set; }
[Required]
[Display(Name = "部门")]
public string OrderDept { get; set; }
[Required]
[Display(Name = "会议或培训内容")]
public string OrderName { get; set; }

public string EmpID { get; set; }

//[Required]
//[RegularExpression(@"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d$", ErrorMessage = "日期时间不合法")]
//[RegularExpression(@"^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[1-9])|(1[0-2]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2})))?$", ErrorMessage = "日期时间不合法")]
[Display(Name = "开始时间")]
public DateTime OrderStartTime { get; set; }
//[Required]
[Display(Name = "结束时间")]
//[RegularExpression(@"^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s(((0?[1-9])|(1[0-2]))\:([0-5][0-9])((\s)|(\:([0-5][0-9])\s))([AM|PM|am|pm]{2,2})))?$", ErrorMessage = "日期时间不合法")]
//[RegularExpression(@"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d$", ErrorMessage = "日期时间不合法")]
public DateTime OrderEndTime { get; set; }
[Required]
//[DefaultValue()]
[Display(Name = "每周会议")]
[Range(0,7)]
public int MeetingCycle { get; set; }
[Display(Name = "是否通过验证")]
public bool IsPass { get; set; }
public string Ip { get; set; }
[NotMapped]
public string EmpName { get; set; }
[NotMapped]
public string MeetingRoomName { get; set; }

最后我想在列表里加两个显示字段.选择不映射.但当我想联表查询时发现出错.不知道怎么解决.
var mo = from e in db.MeetingRooms
from f in db.MeetingOrders
from g in db.Admins
where e.MeetingRoomId == f.MeetingRoomId && f.EmpID == g.EmpDept
orderby f.OrderId descending
select new { e, f, g };

return View(mo.ToList());
这时出现了错误,无法转换.
请问我应该怎么样查询得到meetingorder这个链表.

初次用,是参照MUSICSTORE写的.请指教一下.
...全文
402 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
superj 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
var mo = from e in db.MeetingRooms
join f in db.MeetingOrders on e.MeetingRoomId equals f.MeetingRoomId into j1
join g in db.Admins on j1.f.EmpID equals g.EmpDept into j2
orderby j2.j1.f.Orde……
[/Quote]


大哥.你的这个根本执行不了.我搜了半天,没有一个介绍你这种写法.
flyerwing 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
var mo = from e in db.MeetingRooms
join f in db.MeetingOrders on e.MeetingRoomId equals f.MeetingRoomId into j1
join g in db.Admins on j1.f.EmpID equals g.EmpDept into j2
orderby j2.j1.f.Orde……
[/Quote]
LINQ
threenewbee 2012-04-17
  • 打赏
  • 举报
回复
select new XXXModel() { xxx = xxx, yyy = xxx, ... };

一个一个赋予值呗。
superj 2012-04-17
  • 打赏
  • 举报
回复
我想问的是联表怎么转换成MODEL
threenewbee 2012-04-15
  • 打赏
  • 举报
回复
var mo = from e in db.MeetingRooms
join f in db.MeetingOrders on e.MeetingRoomId equals f.MeetingRoomId into j1
join g in db.Admins on j1.f.EmpID equals g.EmpDept into j2
orderby j2.j1.f.OrderId descending
select new { j2.j1.e, j2.j1.f, j2.g };
superj 2012-04-15
  • 打赏
  • 举报
回复
能说的详细点吗.
机器人 2012-04-15
  • 打赏
  • 举报
回复
表里没有的字段可以取出来之后再加入。或者定义到别的Model里

另外,应该用 join 的写法
superj 2012-04-15
  • 打赏
  • 举报
回复
没人来回?
superj 2012-04-14
  • 打赏
  • 举报
回复
顶一下.

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧