视图模型。加载LINQ查询以查看

时间:2017-07-28 10:58:16

标签: c# .net asp.net-mvc entity-framework linq

我使用EF 6,我需要一个LINQ查询来获取我的ViewModel的所有数据。 每个活动都有一个状态(一对一) 表格中没有FK

我想要显示类似的内容:

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

我坚持这一刻:

            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:'无法在LINQ to Entities查询中构造实体或复杂类型'ModelEvent.EntityFramework.Concrete.EventVM'。'

我无法更改View Model,我必须使用这个

1 个答案:

答案 0 :(得分:0)

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