我有一個SQL Server Express的2012年實體框架以下事件模型:將實體框架的查詢結果映射到我自己的模型類的最佳方式是什麼?
賽事頁面:ID,名稱,描述.. eventDates:IDEvent,DateStart,DateEnd .. eventTopics:IDEvent IDTopic .. 主題:ID,名稱,說明..
因此,eventDates具有eventPage屬性,eventPage具有IEnumerable,eventTopic具有主題屬性等。
我想對模型進行查詢並將結果映射到C#中的自定義類。 我不想使用由EF生成的模型類,我有一些類只有我需要的屬性。即:
主題: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等,但它太慢了,所以我得到我需要的數據第一次,然後我調用構造函數。
爲什麼你不想使用映射類?你必須有一個非常好的理由讓你的模型編碼兩次...... – ivowiblo 2012-07-10 18:01:42