C# 从实体框架中的原始SQL查询返回多个相关实体类型

C# 从实体框架中的原始SQL查询返回多个相关实体类型,c#,entity-framework,C#,Entity Framework,在实体框架中处理原始SQL查询。考虑到这两个相关的EF课程,我的想法是否正确: public partial class Campaign { public int CampaignId { get; set; } public virtual ICollection<Quote> Quotes { get; set; } } public partial class Quote { public int QuoteId { get; set; }

在实体框架中处理原始SQL查询。考虑到这两个相关的EF课程,我的想法是否正确:

public partial class Campaign
{
    public int CampaignId { get; set; }

    public virtual ICollection<Quote> Quotes { get; set; }
}

public partial class Quote
{
    public int QuoteId { get; set; }
    public int CampaignId { get; set; }

    public virtual Campaign Campaign { get; set; }
}

(如果你想知道原因是因为我有一组复杂得多的include,它返回大量未请求的数据。似乎没有人能够解释为什么会发生这种情况,所以我正在寻找替代方法)

我认为你不能用原始SQL查询来实现这一点。您正在尝试实现嵌套的Realationship模型,EF提供了原始sql查询的所有模型映射,这显然将提供与在数据库上运行sql查询相同的平面结果。您正在扼杀实体框架关系建模概念,并希望获得与EF提供的关系映射机制相同的结果

可能与@dotctor重复这是最好的答案。他试图让EF像数据库一样工作,不难理解他现在的处境。它是为代码优先而设计的,IMHO。
string sqlQuery = "select * from Campaign c join Quote q on q.CampaignId = c.CampaignId";
var meh = Entities.Database.SqlQuery<Campaign>(sqlQuery);
Entities.Campaigns.Include(c => c.Quotes);