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更容易(并且可维护)。 –