我在实体框架中有一个带有以下事件模型的 SQL Server Express 2012:
eventPage:ID、名称、描述 .. eventDates:IDEvent、DateStart、DateEnd .. eventTopics:IDEvent IDTopic ..主题:ID、名称、描述..
所以 eventDates 有一个 eventPage 属性, eventPage 有一个 IEnumerable 并且 eventTopic 有一个 topic 属性等等。
我想通过模型进行查询,结果将其映射到我在 C# 中的自定义类。我不想使用 EF 生成的模型类,我有一些具有我需要的唯一属性的类。IE:
主题:ID、名称 EventDate:DateStart、DateEnd 事件:ID、名称、主题、开始、结束
成为主题是主题列表,日期是 EventDates 列表
我有一个方法可以进行查询并返回一个 IQueryable 并从中我想要一个列表。
所以我得到它的方式是:
var events=GetEvents(start, end);
var eventsList = (from ev in events
select new {event = ev, eventPage = ev.eventPage,topics=ev.eventTopics)).ToList();
//Mapping
var map = (from ev in eventsList
select new Event(ev.event,ev.eventPage,ev.topics)).ToList();
在构造函数中我设置了属性:
this.name=eventPage.Name;
this.start=event.Start;
this.end=event.End;
this.topics = topics.Select(t=>t.Topic).ToList();
但这对于大量事件来说有点慢,我想知道是否有更优化的方式。
一开始,构造函数唯一的参数是事件,在里面我得到了 event.eventPage.Name 等,但它太慢了,所以我先得到我需要的数据,然后我调用构造函数。