2017-07-28 70 views
0

即时通讯使用EF 6,我需要一个LINQ查询来获取所有数据到我的ViewModel。 每一个事件都有一个状态(一对一) 有没有FK表中ViewModel。加载LINQ查询来查看

我想要做显示这样的事情:

EventID EventStatusID Name  EventDate EventDesc  
99  1    Allowed 2000-1-1 Music festival 

ViewModel类:

public class EventVM : Event 
{ 
    public EventStatus EStatus { get; set; } 
} 

事件类:

[Serializable] 
public class Event 
{ 
    public int EventID { get; set; } 
    public int EventStatusID { get; set; } 
    public string EventNumber { get; set; } 
    public DateTime EventDate { get; set; } 
    public string EventDesc { get; set; } 
} 

活动状态等级:

[Serializable] 
public class EventStatus 
{ 
    public int EventStatusID { get; set; } 
    public string Name{ get; set; } 
    public string Desc{ get; set; } 
} 

事件表:

dbo.Event 

    Column name  Type  Allow nulls 
PK Eventid   int  no 
    Eventstatusid int  no 
    Eventnumber  nvarchar no 
    Eventdate  date  no 
    Eventdesc  nvarchar no 

EventStatus表:

dbo.EventStatus 

    Column name  Type  Allow nulls 
PK Eventstatusid int  no 
    Desc   nvarchar no 
    Name   nvarchar no 

我在这一刻stucked:

  var viewModel = 
      (from ev in db.Events 
      join evs in db.EventStatus on ev.EventStatusID equals evs.EventStatusID 
      where ev.EventStatusID == id 

      select new EventVM 
      { 
       EventID = ev.EventID 
      }).First(); 

错误:

System.NotSupportedException: 'The entity or complex type 'ModelEvent.EntityFramework.Concrete.EventVM' cannot be constructed in a LINQ to Entities query.'

我不能改变视图模型,我必须使用这一个

+0

只需选择匿名类型,然后创建一个模型。 –

+0

或者让视图模型类不从'Event'继承 –

回答

0

您需要创建模型或使用匿名类型从数据库收集数据(不要忘了使用ToList()实际收集数据),然后将其映射到属性属性EventVM。您收到此错误,因为EF无法正确创建EventVM的实例。