【问题标题】:Returning multiple related entity types from raw SQL queries in Entity Framework从实体框架中的原始 SQL 查询返回多个相关实体类型
【发布时间】:2016-01-28 09:13:34
【问题描述】:

在实体框架中使用原始 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; }
}

表由外键连接,对象由 DB 第一实体框架生成。

我无法发出原始查询来获取所有广告系列及其相关报价?我试过这个:

string sqlQuery = "select * from Campaign c join Quote q on q.CampaignId = c.CampaignId";
var meh = Entities.Database.SqlQuery<Campaign>(sqlQuery);

这只是带回了没有引号的广告系列。所以我猜这是不可行的,但我只是想检查一下我没有做错什么吗?

我在文档中找不到明确的答案。而这个较早的相关问题Fetching complex objects by raw SQL query in Entity Framework 有投票但没有答案。

人们建议这是 EF5 db.Database.SqlQuery mapping returned objects 的副本,但有一个区别:我需要相关的嵌套实体而不是复杂类型。实际上,我想使用 SqlQuery 返回相同的结果集到

Entities.Campaigns.Include(c => c.Quotes);

(如果您想知道为什么会这样,因为我有一组更复杂的 Includes 会返回大量未要求的数据。似乎没有人能够解释为什么会发生这种情况,所以我正在铸造轮换替代方法)

【问题讨论】:

标签: c# entity-framework


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 2021-03-02
    • 2015-06-16
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    相关资源
    最近更新 更多