【发布时间】: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 会返回大量未要求的数据。似乎没有人能够解释为什么会发生这种情况,所以我正在铸造轮换替代方法)
【问题讨论】:
-
@dotctor 这是最好的答案。他正试图让 EF 像数据库一样工作,因此遇到困难是可以理解的。它是为 Code First 设计的,恕我直言。
标签: c# entity-framework