我使用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,我必须使用这个
答案 0 :(得分:0)
您需要创建模型或使用匿名类型从数据库收集数据(不要忘记使用Komponist
来实际收集数据),以及然后将它的属性映射到ToList()
的属性。您收到此错误,因为EventVM
无法正确创建EF
的实例。