1
是否可以在Entity Framework 6.1中使用Database.SqlQuery命令來執行包含多對多關係的查詢,並將其映射回DTO(使用中間DTO - 我知道這不能一次完成)?這樣的行爲會如何表現呢?EF 6.1 Database.SqlQuery投影到複雜類型(多對多關係)
這個例子是一個極其簡化的版本我目前面臨的一個問題。我只是想知道什麼可以(不能)用Database.SqlQuery完成。
我知道我可以使用導航屬性(使用Linq),但我正在調查更復雜的查詢的性能。這只是我試圖實現的一個非常簡化的版本。
數據庫
DTO
public class EventDto{
public int EventId {get;set;}
public string Name {get;set;}
public string Slug {get;set;}
public List<ArtistDto> Headliners {get;set;}
}
public class ArtistDto{
public int ArtistId {get;set;}
public string Name {get;set;}
public string Bio {get;set;}
}
溫度DTO
public class EventWithHeadlinersDto{
public int EventId {get;set;}
public string Name {get;set;}
public string Slug {get;set;}
public int ArtistId {get;set;}
public string Name {get;set;}
public string Bio {get;set;}
}
代碼
return Context.Database.SqlQuery<EventWithHeadlinersDto>(@"
SELECT * FROM [Events] E
LEFT JOIN [Headliners] H ON E.EventId = H.EventId
LEFT JOIN [Artists] A ON H.ArtistId = A.ArtistId
WHERE E.eventid = @eventId",
new SqlParameter("eventId", eventId))
.ToListAsync();
你是否想在你的SQL查詢中包含'FROM Events E'? – stuartd
爲什麼不閱讀'SqlQuery'方法的Intellisense提示 - 它包含一個完整的幫助主題。 –
你有沒有導航屬性的模型?比SqlQuery更容易(並且可維護)。 –